Mysql主从同步复制(快速构建,基于CP数据备份 恢复)
目录
相关
相关原理可以查看此博客
以下作为 实际操作
环境:
主库: 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号是否已经和主库同步
以上操作需谨慎,尤其主库上,输入命令需三思(文档仅供参考)
人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。