1 总结
1:主从复制最大缺陷就是延迟。
2 搭建前的准备
2.1复制的基本原则
- 每个slave只有一个master
- 每个slave只能有一个唯一的服务器ID
- 每个master可以有多个slave
- mysql版本尽量一致,防止出问题。
- 两台服务能ping通
- MySQL主从是基于binlog的,主上须开启binlog才能进行主从。
1 编辑主库的配置文件
vim /etc/my.cnf
2 主库配置
[mysqld]#开启日志 log-bin = mysql-bin#设置服务id,主从不能一致 ,一般设置为ip最后一段server-id = 19 #设置需要同步的数据库 binlog-do-db=aa_db #屏蔽系统库同步 binlog-ignore-db=mysql binlog-ignore-db=bb_db
2、登录主库:
mysql -uroot -p
3创建用户
降低密码强度(不建议使用)
SELECT @@VALIDATE_PASSWORD_POLICY;
set global validate_password_policy = 0;
set global validate_password_length=1;
4 授权主从复制专用账号(给从库复制数据使用的)
GRANT REPLICATION SLAVE ON *.* TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';
5 刷新权限
flush privileges;
6 查看主库信息,注意:记录一下file和Position,从库配置时用
show master status;
从库配置
[mysqld]#设置3306端口port = 3306 # 允许最大连接数max_connections=1000#开启日志 log-bin = mysql-bin #设置服务id,主从不能一样 ,一般设置为ip最后一段server-id = 18 #复制异常处理方式slave-skip-errors=all#设置需要同步的数据库 (一般不用)replicate_wild_do_table=test_db.% #屏蔽系统自带的库的同步 (重要)replicate_wild_ignore_table=mysql.% replicate_wild_ignore_table=information_schema.% replicate_wild_ignore_table=performance_schema.%
从库登录
mysql -u root -p
根据主库信息,执行
CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_PORT=3306,MASTER_USER='db_sync', MASTER_PASSWORD='db_sync',MASTER_LOG_FILE='file信息',MASTER_LOG_POS=Position信息;
4、启动服务
# 开启
mysql> start slave;
# 停止
mysql> stop slave;
# 重启
mysql> reset slave;
5、确认Slave_IO_Runing以及Slave_SQL_Runing两个状态位是否为“Yes”,如果不为 Yes,
请检查error_log,然后排查相关异常。
mysql>show slave status;
提示: flush table with read lock; unlock tables;
验证:
1:主库新建用户并授权,从库也能登录。
2:建立关系后所有新建的表和库都会同步,但是没建立关系之前主库就创建的东西不会同步。