1.克隆 MySQL ( MGR ) 05 后的VM & 修改配置(本次为 201节点,其他202同理)
[root@xag200 ~]# service mysqld stop
Shutting down MySQL.... SUCCESS!
[root@xag200 ~]# vim /usr/local/mysql/data/auto.cnf
[root@xag200 ~]# cat /usr/local/mysql/data/auto.cnf
[auto]
server-uuid=2016c7e9-63c9-11eb-a1ba-000c299e2201
[root@xag200 ~]# sed -i 's/127.0.0.1/xag201/' /root/.bashrc
[root@xag200 ~]# source /root/.bash_profile
[root@xag200 ~]# hostname
xag201
[root@xag200 ~]# cat /etc/hostname
xag201
[root@xag200 ~]# cat /etc/sysconfig/network
NETWORKING=yes
NOZEROCONF=yes
HOSTNAME=xag201
[root@xag200 ~]# cat /etc/hosts
...
192.168.40.201 xag211 xag201
192.168.40.202 xag212 xag202
[root@xag200 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
。。。
IPADDR="192.168.40.201"
。。。
[root@xag200 ~]# reboot
2.修改 /etc/my.cnf 中 #复制框架设置
#复制框架设置
server-id = 201
auto_increment_offset=1 #起始值。一般填第n台主MySQL。此时为第一台主MySQL
auto_increment_increment=2 #步进值auto_imcrement。一般有n台主MySQL就填n
#表示本机的序列号为1,如果做主从,或者多实例,serverid一定不能相同。
log-bin = /usr/local/mysql/binlog/binlog
#logbin数据库的操作日志,例如update、delete、create等都会存储到binlog日志,通过logbin可以实现增量恢复
binlog_format = row
#定义了从库从主库获取数据等待的秒数,超过这个时间从库会主动退出读取,中断连接,并尝试重连
slave_net_timeout=15
#信任子程序的创建者(解決mysql主從同步時错误1418)
log-bin-trust-function-creators=1
#要同步的数据库,默认所有库
replicate-do-db=testdb
#启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止。
relay_log_recovery=ON
relay_log_purge=ON
#跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断。
#如: 1062 错误是指一些主键重复, 1032 错误是因为主从数据库数据不一致
slave_skip_errors=1062,1032,1007,1008,1050,1051,1054,1060,1061,1068,1094,1146
- xag201上执行DB全备份
[root@xag201 pxb]# mkdir -p /data/pxb/20210216
[root@xag201 pxb]#
innobackupex --defaults-file=/etc/my.cnf --user=pxb --password=123456 --socket=/usr/local/mysql/tmp/mysql.socket --no-timestamp /data/pxb/20210216
[root@xag201 pxb]# cd 20210216/
[root@xag201 20210216]# cat xtrabackup_info
...
binlog_pos = filename 'binlog.000022', position '421'
...
4.在主库创建同步复制用户
root@xag201:(none) [:13: ] 5 SQL->CREATE USER 'repl'@'%' IDENTIFIED BY 'rep123';
root@xag201:(none) [:13: ] 6 SQL->grant replication slave on *.* to 'repl'@'%' identified by 'rep123';
root@xag201:(none) [:13: ] 7 SQL->show variables like '%server%';
+---------------------------------+--------------------------------------+
| Variable_name | Value |
+---------------------------------+--------------------------------------+
| character_set_server | utf8mb4 |
| collation_server | utf8mb4_general_ci |
| innodb_ft_server_stopword_table | |
| server_id | 201 |
| server_id_bits | 32 |
| server_uuid | 2016c7e9-63c9-11eb-a1ba-000c299e2201 |
+---------------------------------+--------------------------------------+
- scp 備份到 備用服務器上
[root@xag201 20210216]#
scp -r /data/pxb/20210216 xag202:/data/pxb/
- 備用服務器上全量恢復
[root@xag202 /]# service mysqld stop
[root@xag202 /]# cd /usr/local/mysql
[root@xag202 mysql]# mv data/ data_bak/
[root@xag202 mysql]# mkdir data
[root@xag202 mysql]# mv undo/ undo_bak/
[root@xag202 mysql]# mkdir undo
[root@xag202 mysql]# mv redo/ redo_bak/
[root@xag202 mysql]# mkdir redo
#准备(prepare)一个完全备份: --apply-log (/data/pxb/20210216 为备份目录,
#执行之后 xtrabackup_checkpoints 文件中的 backup_type = full-prepared )
[root@xag202 pxb]# innobackupex --apply-log /data/pxb/20210216/
#执行恢复操作
[root@xag202 pxb]#
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/pxb/20210216/
#更改 data/ 等 目录权限并启动mysql:
[root@MYSQL ~]# chown -Rf mysql:mysql /usr/local/mysql
[root@xag202 mysql]# service mysqld start
Starting MySQL. SUCCESS!
7.创建同步
#备库上
root@xag202:testdb [:16: ] 6 SQL->
change master to master_host='xag201', master_port=3306, master_user='repl', master_password='rep123',master_log_file='binlog.000022',master_log_pos=421;
root@xag202:testdb [:21: ] 7 SQL->start slave;
root@xag202:testdb [:22: ] 8 SQL->show slave status\G
*************************** 1. row ***************************
。。。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
。。。
Seconds_Behind_Master: 0
#记下下面两个参数的值,后面会在A库执行
root@xag202:testdb [:22: ] 9 SQL->show master status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000023 | 696 | | | |
+---------------+----------+--------------+------------------+-------------------+
#主库上
root@xag201:(none) [:13: ] 8 SQL->
change master to master_host='xag202', master_port=3306, master_user='repl', master_password='rep123',master_log_file='binlog.000023',master_log_pos=696;
root@xag201:(none) [:26: ] 11 SQL->start slave;
Query OK, 0 rows affected (0.00 sec)
root@xag201:(none) [:26: ] 12 SQL->show slave status\G
*************************** 1. row ***************************
。。。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
。。。
Seconds_Behind_Master: 0