0
点赞
收藏
分享

微信扫一扫

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

以沫的窝 2022-05-16 阅读 108


目录

​​相关 ​​

​​思路​​

​​主库​​

​​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、启动主从​​

相关 

相关原理可以查看此博客        

http://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

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

主库

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号是否已经和主库同步

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


举报

相关推荐

0 条评论