Mysql主从同步复制(快速构建,基于CP数据备份 恢复)

目录

相关 

思路

主库

1、检查主库是否开启log-bin

2、开启log-bin

3、重启MySQL

4、检查生成的log-bin目录

5、进入MySQL,锁表,记录POS号

6、备份mysql文件,解表

7、主库传输mysql文件到从库

8、添加iptables防火墙规则(ip为从库IP)

从库

1、停止从库的业务程序

2、停止票务开机自启程序

3、检查主库是否开启log-bin

4、开启log-bin,添加配置,修改id

4、停止mysql ,备份目录

5、覆盖mysql目录,删除auto.cnf

6、启动mysql

7、启动主从


相关 

相关原理可以查看此博客        

https://blog.csdn.net/heian_99/article/details/106647572http://xn--mysql-ni1h1kkd34cien8anzj00an2yqrx8k1a1u9c2j7e9svvilaaa

以下作为 实际操作

环境:

主库:    mysql

从库:        mysql

思路

(1)主库A数据全,数据库B空的

(2)锁表数据库A,记录pos号

(3)复制数据库A目录数据(进行cp备份)然后 解锁表

(4)把数据库A备份的数据进行scp 数据库B

(5)把数据库A的目录,进行覆盖数据库B的目录。(数据覆盖,相当于备份恢复)

(6)进行主共同步

注意:日志格式 statement  row mixed   建议使用 mixed

主库

1、检查主库是否开启log-bin

[root@92-69-xy-bak ~]# cat /etc/my.cnf | grep log-bin
log-bin=/databak/mysql-bin/mysql-bin

2、开启log-bin

如果上面没有显示,需要开启log-bin

开启
vim /etc/my.cnf
log-bin=/databak/mysql-bin/mysql-bin
创建目录,授权
mkdir  /databak/mysql-bin
chown  mysql.mysql  /databak/mysql-bin   -R

3、重启MySQL

重启mysql是因为刚开启log-bin日志,需要生成数据

service  mysql restart

4、检查生成的log-bin目录

目的:是否开启log-bin成功,是否生成日志数据
 ls /databak/mysql-bin/

生成的数据
mysql-bin.000001  mysql-bin.000002  mysql-bin.000003  mysql-bin.index

5、进入MySQL,锁表,记录POS

mysql -ucpms -pudqjHDMkxQfGP4iy
FLUSH TABLES WITH READ LOCK;
show master status;
echo  "日志名字    偏移量"   >  /var/lib/mysql/记录文件

6、备份mysql文件,解表

cp  -r    /var/lib/mysql /opt/mysql_bak

UNLOCK TABLES;

7、主库传输mysql文件到从库

cd /opt
scp -r mysql_bak soft CMS3.10.21 192.168.0.3:/opt

8、添加iptables防火墙规则(ip为从库IP

 vim /etc/sysconfig/iptables
-A INPUT -s 10.92.69.3 -p tcp --dport 3306 -j ACCEPT
/etc/init.d/iptables restart

以上操作主库完成

从库

1、停止从库的业务程序

pkill java

2、停止票务开机自启程序

chkconfig --list | grep cms |awk '{print "chkconfig",$1,"off"}'|bash

3、检查主库是否开启log-bin

[root@92-69-xy-bak ~]# cat /etc/my.cnf | grep log-bin
log-bin=/databak/mysql-bin/mysql-bin

4、开启log-bin,添加配置,修改id

如果上面没有显示,需要开启log-bin

开启
vim /etc/my.cnf
log-bin=/databak/mysql-bin/mysql-bin

server-id=2

replicate_ignore_table=CMS.QC_TEMP
replicate_ignore_table=CMS.QM_TEMP
replicate_ignore_table=CMS.STORE_IN_TEMP
replicate_ignore_table=CMS.TEMP_POS_SALE_GOODS_ITEM_COST
replicate_ignore_table=CMS.TEMP_POS_REJECT_GOODS_ITEM_COST
replicate_ignore_table=CMS.MER_INTERFACE_DAY_STORE_CHECK
slave-skip-errors = 1062


创建目录,授权
mkdir  /databak/mysql-bin
chown  mysql.mysql  /databak/mysql-bin   -R

4、停止mysql ,备份目录

service mysql stop

mv /var/lib/mysql /var/lib/bak_mysql

5、覆盖mysql目录,删除auto.cnf

cp -r /opt/mysql_bak /var/lib/mysql

\rm   /var/lib/mysql/auto.cnf

6、启动mysql

service mysql start

7、启动主从

进入mysql
mysql -uroot -p^passswd
停止slave
stop  slave;
写入 配置信息(注意pos号,账号,主库ip 端口)
change master to
master_host='10.92.69.2',
master_port=3306,
master_user='admin',
master_password='udq5545adadefiy',
master_log_file='mysql-bin.000001',
master_log_pos=17503;
开启从库
start  slave;
查看状态
show slave status\G
两个yes为正常,检查pos号是否已经和主库同步

以上操作需谨慎,尤其主库上,输入命令需三思(文档仅供参考)

posted @ 2022-05-21 18:49  南宫乘风  阅读(173)  评论(0编辑  收藏  举报