Mysql不停止主库做Slave ,mysqldump
2017年06月01日 15:20:25
阅读数:445
mysql服务器的主从配置,这样不但可以实现读写分离,也可以在主库死机后从备用库中恢复,如果有多个从库,还能实现集群,但是一直以来网上的很多教程都需要重启主库,在生产环境中这是不允许的,下面给大家一种不停止主库做从库的方法。
原有主库配置参数如下:# vi my.cnf
server-id = 1 #id要唯一
log-bin = mysql-bin #开启binlog日志
1. 主库创建同步账号# mysql> grant replication slave on *.* to 'sync'@'192.168.18.%' identified by 'sync';
2. 从库配置MySQL# vi my.cnf
server-id = 3 #这个设置3
log-bin = mysql-bin #开启binlog日志
auto-increment-increment = 1 #这两个参数在Ubuntu系统中MySQL5.5以后都已经默认是1
auto-increment-offset = 1 避免两台服务器同时做更新时自增长字段的值之间发生冲突
slave-skip-errors = all #跳过主从复制出现的错误
log_slave_updates = 1
#开启从的binlog日志
3. 备份主库
# mysqldump -uroot -p --routines --single_transaction --master-data=2 --databases weibo > weibo.sql
参数说明:
–routines:导出存储过程和函数
–single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务。
–master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。
4. 把备份库拷贝到从库# scp weibo.sql root@192.168.18.214:/home/root
5. 从库导入备份库# mysql -uroot -p123 -e 'create database weibo;'
# mysql -uroot -p123 weibo < weibo.sql
6. 在备份文件weibo.sql查看binlog和pos值# head -25 weibo.sql #大概22行
7. 从库设置从这个日志点同步,并启动mysql> change master to master_host='192.168.18.212',
-> master_user='sync',
-> master_password='sync',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=107;
mysql> start slave;
mysql> show slave status\G;
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.18.212
Master_User: sync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 358
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 504
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
......
可以看到IO和SQL线程均为YES,说明主从配置成功。
8. 从库查看weibo库里面的表mysql> show tables;
+---------------------------+
| Tables_in_weibo |
+---------------------------+
| test_tb |
+---------------------------+
发现刚才模拟创建的test_tb表已经同步过来!