正在运行的主库上加从库过程

一、利用历史备份数据进行配置主从:

1、将主库前一天备份的数据传输到从库机上。

主库备份语句加上--master-data=2,记录其change master to信息。

2、在从库上导入主库备份数据。

mysql -uroot -ppasswd < bak_20180411.sql

3、查看从库上的备份数据:bak_20180411.sql,找到其中的CHANGE MASTER TO字段,记录position。

    cat bak_20180411.sql | awk 'NR==22{print}'

4、主库与从库建立复制账号:

grant REPLICATION SLAVE,replication client on *.* to 'root'@'%' identified by '123456';

5、将从库定位到主库(用到了备份数据中的CHANGE MASTER TO信息):

change master to master_user='root',master_host='192.168.18.1',master_password='123456',master_log_file='mysql-bin.00005',master_log_pos=84011;

6、启动从库:

start slave;

7、查看主从是否成功:

show slave status\G;

查看Last_IO_Error是否有报错。根据错误提示修改检查。

Slave_IO_Running         Slave_SQL_Running      Seconds_Behind_Master  查看三个字段。

报错:Could not execute Delete_rows event on table ; Can't find record in 'ls', Error_code: 1032; handler error HY_NOT_FOUND; the event's master log mysql-bin.000043, end_log_pos 723683, Error_code: 1032

解决:检查备份文件是否是最新的备份,确认目标主机的备份和从机的数据是一致的。

 

 

二、如果业务量不大,可以进行在线复制整个数据库数据,再做主从。或者在半夜的时候写个脚本自动执行创建主从。

1、具体要用到MySQL Utilities工具里的 mysqldbcopy 这个在线复制工具。

2、mysqldbcopy --source=failover:123456@192.168.152.161:3306 --destination=failover:123456@192.168.152.158:3306 -vvv --drop-first --all --rpl=master --rpl-user=backup:123456

--source:要从哪复制的源服务器。格式:账户:密码@IP:端口

--destination:要复制到哪台服务器上,也就是目标服务器。格式:账户:密码@IP:端口

 -vvv:显示详细信息。

--drop-first:复制之前先删除。

--all:复制所有库。

--rpl=master:这个是要做主从的参数,--rpl有两个选项,一个为master一个为slave。master参数指定目标服务器作为源服务器的从。slave参数仅仅在源服务器是从有用。

--rpl-user=backup:123456:指定replication账户,格式:账户:密码

复制完成后自动执行CHANGE MASTER TO语句,创建主从:

 

三、GTID加从:

导入昨晚的备份。里面包含了GTID组的信息:SET @@GLOBAL.GTID_PURGED='xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx:1-94804';这样的信息

1、导入。

2、reset master;reset slave;

3、SET GLOBAL GTID_PURGED='xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx:1-94804';

 4、定位到主库:

change master to master_host='192.168.10.100',master_user='backup',master_password='123456',master_port=3306,master_auto_position=1;

5、启动从库

posted @ 2018-04-11 12:03  叶落千尘  阅读(405)  评论(0编辑  收藏  举报