共计 4219 个字符,预计需要花费 11 分钟才能阅读完成。
mysql 5.7 主从复制
本节是在上一节的基础之上做的操作,上节我们通过脚本实现了一键自动化安装 mysql5.7, 这次我们要在三台机器上部署 msyql5.7, 并实现主从复制, 实现的宗旨是, 能自动化, 就尽量自动化, 实在不能自动化, 那就手工化
用的脚本和文件说明
1.install_mysql.sh 自动化安装 mysql 脚本
2.ntpdate.sh 时间同步脚本
3.system_init.sh 系统初始化脚本
4.yum.sh yum 源配置脚本
5.exec_commond.sh 批量执行命令脚本, 附带分发公钥功能 6.fenfa.sh 分发文件
7.secret_key.sh 创建秘钥脚本
执行步骤:
1. 创建目录和下载脚本
mkdir -p /server/script
cd /server/script
wget -c http://192.168.42.26/script/yum.sh
wget -c http://192.168.42.26/script/install_mysql.sh
wget -c http://192.168.42.26/script/ntpdate.sh
wget -c http://192.168.42.26/script/create_bash.sh
wget -c http://192.168.42.26/script/system_init.sh
wget -c http://192.168.42.26/script/change_ip.sh
wget -c http://192.168.42.26/script/change_hostname.sh
wget -c http://192.168.42.26/script/exec_commond.sh
wget -c http://192.168.42.26/script/fenfa.sh
wget -c http://192.168.42.26/script/secret_key.sh
我们在一阶段已经阐述, 一键安装 mysql 了, 现在依照上次的方法, 依次在三台主机上安装 mysql(详情请看一阶段)修改主机名和 ip 地址(三台), 实现方法, 依次在三台机器下, 下载脚本, 执行脚本
更改 ip 和主机名的示例:
bash change_ip.sh 192.168.42.80 mysql-master
bash change_ip.sh 192.168.42.81 mysql-slave1
bash change_ip.sh 192.168.42.82 mysql-slave2
我们这里是用 master 机器来分发文件, 所有需要将被管理的 ip 集合起来送给 ip_hosts.sh. 格式如下
#mysql 从服务器 2 台
192.168.42.81
192.168.42.82
- 依次初始化系统和安装 mysql(参照一阶段)
- 在 mysql-master 主机上编辑 hosts 文件, 等下统一分发 hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.42.80 mysql-master
192.168.42.81 mysql-slave1
192.168.42.82 mysql-slave2
5. 首先查看 master 主机有没有 magedu 账号, 没有就创建(这里默认是用 magedu 账号来统一分发文件) 需要手工创建
id magedu
useradd magedu
echo 123456 | passwd --stdin magedu
yum install rsync -y
6. 其他两台从机器也是同样需要创建 magedu 账号, 我们这里使用脚本创建(注意是 master 机器上执行)
bash exec_commond.sh "useradd magedu"
bash exec_commond.sh "echo 123456 | passwd --stdin magedu"
bash exec_commond.sh "yum install rsync -y"
bash exec_commond.sh "echo'magedu ALL=(ALL) NOPASSWD: /bin/rsync'>>/etc/sudoers"
7. 创建秘钥分发秘钥
bash secret_key.sh 1
bash exec_commond.sh "fenfa"
8. 利用分发脚本分发 hosts 文件 注意切换用户 magedu, 在 magedu 家目录下进行分发
在 master 机器上将 hosts 文件复制到家目录下, 执行分发脚本
cp /etc/hosts /home/magedu/
bash /server/script/master/fenfa.sh hosts
bash /server/script/master/fenfa.sh --commond "sudo rsync /home/magedu/hosts /etc/"
9.master 机器配置, 因为在安装的时候默认已经开启了
# 开启二进制日志
bin-log
#指定 server-id
server-id=1
#主服务器添加复制账号
mysql -e "grant replication slave on *.* to'repluser'@'192.168.%.%'identified by'replpass';"
mysql -e "flush privileges;"
mysql -e "show master status;"
脚本获取(mysql -e "show master status;" | grep "master"| tr "[:space:]" ""| cut -d" " -f 1)
得到的结果是给下面的连接主服务器使用的(需要注意)
10. 从服务器配置 (两台都要配置哦)
# 关闭二进制日志
#bin-log
#开启中继日志
relay-log = relay-log
relay-log-index = relay-log.index
sever-id = 11 #类推
read_only = on #设置成只读
***************************** 以上是配置文件中 *********************************************
#查看当前状态
mysql -e "show slave status\G;"
mysql -e "change master to master_host ='192.168.42.80',master_user='repluser',master_password='replpass',master_log_file='mysql-bin.000001',master_log_pos=863;"
mysql -e "show slave status \G;"
mysql -e "start slave;"
[root@mysql-slave2 script]# mysql -e "show slave status \G;"
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.42.80
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 863
Relay_Log_File: relay-log.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 863
Relay_Log_Space: 521
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 8250def6-3aa6-11e7-a782-000c29c8721f
Master_Info_File: /application/mysql/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
看到以上就是正常的
自此一主多从的配置已经搭建完成了, 在主服务器上创建数据库, 试试, 看看是否同步到两台从服务器上