MySQL主从模式是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,从节点可以复制主数据库中的所有数据库,或者特定的数据库,或者特定的表。
mysql主从复制用途:
- 实时灾备,用于故障切换(高可用)
- 读写分离,提供查询服务(读扩展)
- 数据备份,避免影响业务(高可用)
主从部署必要条件:
- 从库服务器能连通主库
- 主库开启binlog日志(设置log-bin参数)
- 主从server-id不同
操作步骤:
1.安装2台mysql服务器,master(192.168.10.1)和slave(192.168.10.2).
2.主库开启bin-log
在my.cnf中的[mysqld]下添加
log_bin=mysql-bin #log文件名
server-id=1
sync-binlog=1
binlog-ignore-db=performance_schema #要忽略的库
binlog-do-db=user #指定要同步的库
重启mysql
3.主库给从库授权
mysql -uroot -p 进入命令行
执行
grant replication slave on *.* to 'root'@'%' identified by 'root';
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges; //刷新
show master status;//查看主库状态,能看到对应的binlog文件
| File |Postion|Binlog_Do_DB|Binlog_Ignore_DB |Executed_Gtid_Set|
| mysql-bin.000002 | 869 | |performance_schema| |
4.从库配置
从库主要是接收主库binlog日志,因此这里无需开启从库的binlog日志功能.
在my.cnf中的[mysqld]下添加
server-id=2
relay_log=mysql-relay-bin
read_only=1 #只读
重启mysql
5.指定主库地址
从库中 mysql -uroot -p 进入命令行
执行
change master to master_host='192.168.10.1',master_port=3306,master_user='root',master_password='123456',master_log_file='mysql_bin.000002',master_log_pos=869;
start slave;
show slave status \G; #能查到信息,不为Empty即可
master_log_file,master_log_pos参数在第三步最后查看主库状态时得知
验证方法:在主库中建库建表,插入行数据,在子库中能查询到
[参考]http://xinyeshuaiqi.cn/2019/11/06/mysql-master-slave/