mysql主从复制,不停库
1.实现思路
首先通过mysqldump将主库数据备份,然后将备份数据恢复至从库,
再在从库中通过binlog执行同步。
2.操作过程
MySQL主从是基于binlog日志,所以在安装好数据库后就要开启binlog。这样好处是,一方面可以用binlog恢复数据库,另一方面可以为主从做准备。
(1)主库配置
#vi my.cnf
server-id=1#id要唯一
log-bin=mysql-bin#开启binlog日志
auto-increment-increment=1#在MySQL5.5以后已经默认是1
auto-increment-offset=1#表示自增长字段从那个数开始,他的取值范围是1 .. 65535
slave-skip-errors=all#跳过主从复制出现的错误
(2)主库创建同步账号
mysql> create user 'slave'@'%' identified by '1234567'; ----创建从服务器同步用的mysql用户
mysql> grant replication slave,replication client on *.* to 'slave'@'%'; ----授权创建的用户权限
(3)从库配置
#vi my.cnf
server-id=2
log-bin=mysql-bin#开启binlog日志
auto-increment-increment=1#MySQL5.5以后都已经默认是1
auto-increment-offset=1
slave-skip-errors=all#跳过主从复制出现的错误
read_only=1#普通用户只读
super_read_only=1 #root用户只读
(4)备份主库
mysqldump -uroot -p123 --routines --single_transaction --master-data=2 --databases 数据库1 数据库2 > db.sql参数说明:
--routines:导出存储过程和函数
--single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务,然后unlock tables;而lock-tables是锁住一张表不能写操作,直到dump完毕。
--master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。
(5)备份还原至从库
mysql -uroot -p123 -e'create database dbname;'
mysql -uroot -p123 dbname < db.sql
(6)开启同步
#在备份文件weibo.sql查看binlog和pos值
less db.sql
#执行同步
#连接mysql执行以下:
mysql -uroot -p123
change master to master_host='192.168.8.X',master_user='slave',master_password='123456',master_log_file='mysql-bin.000024',master_log_pos=507828577;
start slave; #开启slave
show slave status \G;
#可以看到IO和SQL线程均为YES,说明主从配置成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes