--------------前提说明:
如果主库是之前存在的,先备份,在从服务器上边新建一个和主库一模一样的数据库,并且把主库原有的数据搬过来
192.168.174.128 主库 (centos 7)
192.168.174.131 从库 (centos 7)
配置文件的位置: vi /etc/my.cnf
------------------ 主库 ---------
server-id = 1 # 节点ID,确保唯一
log-bin = mysql-bin #开启mysql的binlog日志功能
sync_binlog = 1 #控制数据库的binlog刷到磁盘上去 , 0 不控制,性能最好,1每次事物提交都会刷到日志文件中,性能最差,最安全
binlog_format = mixed #binlog日志格式,mysql默认采用statement,建议使用mixed
expire_logs_days = 7 #binlog过期清理时间
max_binlog_size = 100m #binlog每个日志文件大小
binlog_cache_size = 4m #binlog缓存大小
binlog_do_db = user # 要同步的数据库,多个复制这句话,写多行
max_binlog_cache_size= 512m #最大binlog缓存大
binlog-ignore-db=mysql #不生成日志文件的数据库,多个忽略数据库可以用逗号拼接,或者 复制这句话,写多行
auto-increment-offset = 1 # 自增值的偏移量
auto-increment-increment = 1 # 自增值的自增量
slave-skip-errors = all #跳过从库错误
## 登陆主库 创建用户专门用来主从同步
CREATE USER cdn IDENTIFIED BY 'Admin@123';
grant replication slave on *.* to 'cdn'@'%' identified by 'Admin@123';
# 查看主库的状态
show master status;
记住 File 和 Position(从库会用到)
主库上查看愚笨主库连接的从库
show slave hosts;
----------- 从库 -------------
server_id = 2
log_bin = mysql-bin #开启日志
binlog_format=MIXED #日志记录的格式
max_binlog_size = 512M #单个日志文件最大
expire_logs_day = 3 #日志有效期(天)
replicate_do_db = user #是在slave上配置,指定slave要复制哪个库,多个就复制本行
replicate-ignore-db=mysql,performance_schema,information_schema #是在slave上配置,指定slave要忽略哪个库
relay_log_recovery = 1 #从库建议开启,有利于数据一致性
log_slave_updates = 1 #如果从库还会用做主库,建议开启
#登陆从库
stop slave;
change master to
master_host='192.168.174.128',
master_user='cdn',
master_password='Admin@123',
master_port=3306,
master_log_file='mysql-bin.000012',
master_log_pos=154;
start slave;
查看同步状态 show slave status\G
主要看这两项
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
------>>>>>>>>>>>> Slave_IO_Running: No -------
1、如果是虚拟机克隆,需要修改mysql的uuid,文件在位置 find -name auto.cnf
2、看日志文件比那好是否与主库一致:
master_log_file='mysql-bin.000012', (主库的信息)
master_log_pos=154; (主库信息)
-----------------------Slave_SQL_Running: No-----------------------------
1.程序可能在slave上进行了写操作
2.也可能是slave机器重起后,事务回滚造成的.
一般是事务回滚造成的:
解决办法:
stop slave ;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave ;