目录
相关
思路
主库
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
1
2
|
[root@92-69-xy-bak ~]# cat /etc/my.cnf | grep log-bin
log-bin=/databak/mysql-bin/mysql-bin
|
2、开启log-bin
如果上面没有显示,需要开启log-bin
1
2
3
4
5
6
|
开启
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日志,需要生成数据
4、检查生成的log-bin****目录
1
|
目的:是否开启log-bin成功,是否生成日志数据
|
1
2
3
4
|
ls /databak/mysql-bin/
生成的数据
mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 mysql-bin.index
|
5、进入MySQL,锁表,记录POS****号
1
2
3
4
|
mysql -ucpms -pudqjHDMkxQfGP4iy
FLUSH TABLES WITH READ LOCK;
show master status;
echo "日志名字 偏移量" > /var/lib/mysql/记录文件
|
6、备份mysql文件,解表
1
2
3
|
cp -r /var/lib/mysql /opt/mysql_bak
UNLOCK TABLES;
|
7、主库传输mysql****文件到从库
1
2
|
cd /opt
scp -r mysql_bak soft CMS3.10.21 192.168.0.3:/opt
|
8、添加iptables防火墙规则(ip为从库IP**)**
1
2
3
|
vim /etc/sysconfig/iptables
-A INPUT -s 10.92.69.3 -p tcp --dport 3306 -j ACCEPT
/etc/init.d/iptables restart
|
以上操作主库完成
从库
1、停止从库的业务程序
2、停止票务开机自启程序
1
|
chkconfig --list | grep cms |awk '{print "chkconfig",$1,"off"}'|bash
|
3、检查主库是否开启log-bin
1
2
|
[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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
开启
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 ,备份目录
1
2
3
|
service mysql stop
mv /var/lib/mysql /var/lib/bak_mysql
|
5、覆盖mysql目录,删除auto.cnf
1
2
3
|
cp -r /opt/mysql_bak /var/lib/mysql
\rm /var/lib/mysql/auto.cnf
|
6、启动mysql
7、启动主从
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
进入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号是否已经和主库同步
|
以上操作需谨慎,尤其主库上,输入命令需三思(文档仅供参考)