mysql主从数据同步
一,安装好主数据库和从数据库,此处省略
我已经准备好了以下数据库
主:
centos 7
mysql 5.7
ip 192.168.1.2
从:
centos 7
mysql 5.7
ip 192.168.1.3
二,主数据库配置(192.168.1.2)
my.cnf ,添加以下配置
#唯一标识,主库从库不能重复 server_id = 1 #开启日志 log_bin = mysql-bin #日志记录格式 binlog_format=MIXED #单个日志文件最大 max_binlog_size = 512M #日志有效期 expire_logs_days = 3 #日志只记录哪些数据库,这里只同步zhong数据,如果多个数据库用逗号隔开 binlog_do_db = zhong #日志忽略哪些数据库 binlog_ignore_db = mysql,performance_schema,information_schema
重启mysql
service mysql restart
创建一个同步的用户
//允许ip192.168.1.3登录,只有同步数据的权限,密码123456 CREATE USER 'slave'@'192.168.1.3' IDENTIFIED BY '123456'; grant replication slave on *.* to 'slave'@'192.168.1.3' identified by '123456'; flush privileges;
如果主库已有数据,从库还没(如果主从库数据一致性请忽略)
在从库创建需要同步的库
主库执行,刷新表然后锁表
flush tables with read lock;
导出数据后,导入到从库
三,从库配置(192.168.1.3)
my.cnf ,添加以下配置
#唯一标识,不能和主库重复 server_id = 2 #开启日志 log_bin = mysql-bin #日志记录的格式 binlog_format=MIXED #单个日志文件最大 max_binlog_size = 512M #日志过期时间 expire_logs_days = 3 #是在slave上配置,指定slave要复制哪个库 replicate_do_db = zhong #是在slave上配置,指定slave要忽略哪个库 replicate-ignore-db=mysql,performance_schema,information_schema #从库建议开启,有利于数据一致性 relay_log_recovery = 1 #如果从库还会用做主库,建议开启 log_slave_updates = 1
重启mysql
service mysql restart
执行以下sql语句
主库执行
show master status;
记下 Position 和 File 的值
从库执行
stop slave; -- master_log_file和master_log_pos是刚才查询主库记下的值 change master to master_host='192.168.1.2',master_user='slave',master_password='123456',master_post=3306,master_log_file='mysql-bin.000004',master_log_pos=154; start slave;
查看同步线程是否正常
show slave status;
回到主库解锁表(如果主从库数据一致性请忽略)
unlock tables;
到处完成了,可以去主库添加数据测试下,从库是否正常同步
四,从库和主库时间不一致,相差几个小时
例如以上,从库同步后相差了12个小时
时区问题
修改主库和从库配置,my.cnf
在 [mysqld] 下添加配置
default-time-zone=timezone default-time-zone = '+8:00'
重启mysql
service mysql restart
问题解决
my.cnf ,添加以下配置