前提
MySQL服务器准备两台:
1、Master:192.168.100.130
2、Slave: 192.168.100.133
端口默认3306
1、Master:192.168.100.130
2、Slave: 192.168.100.133
端口默认3306
配置过程:
一、主库配置:
1、编辑配置文件:
$ vim /etc/my.cnf
添加以下内容:
################################################
# MySQL主从配置,主节点ip地址后三位
server-id=130
# 配置不需要复制的库mysql
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
# 标记出需要同步的数据库名,在多从配置时可以按需配置
#replicate_do_db=table_name
# 可以配置的值:0/1/2;
# 0、效率最高,最不安全;
# 1、最安全,但是效率最低;
# 2、安全和效率平衡的取舍,在服务器系统挂掉的情况下会丢失数据;
innodb_flush_log_at_trx_commit=2
# 每进行n次事务提交之后,MySQL将binlog_cache中的数据强制写入磁盘。
sync_binlog=1000
# 根据实际情况决定开启多少个线程用于主从复制
slave_parallel_workers=4
# 基于组提交的并行复制方式
slave_parallel_type=logical_clock
master_info_repository=TABLE
relay_log_info_repository=TABLE
# 避免由于从库relay log损坏导致的主从不一致的情形
relay_log_recovery=ON
# 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。
log_bin=master-bin.log
log_bin_index=master-bin.index
################################################
2、主节点配置过程,创建用于主从同步的账户:
# 登录MySQL
$ mysql -u root -p
# 创建测试用户testuser,5.7要求密码必须含有大小写英文,符号和数字(密码:aA123456/)
mysql> create user 'testuser'@'%' identified by 'aA123456/';
# 赋予FILE权限,允许从从库ip(192.168.100.133)访问主库(192.168.100.130)
mysql> grant FILe on *.* to 'testuser'@'192.168.100.133' identified by 'aA123456/';
# 赋予主从同步权限
mysql> grant replication slave on *.* to 'testuser'@'192.168.100.133' identified by 'aA123456/';
# 刷新MySQL的新用户的系统权限相关表
mysql> flush privileges;
# 重启mysql
$ systemctl restart mysqld
二、从库配置:
1、编辑配置文件:
$ vim /etc/my.cnf
添加以下内容:
################################################
# MySQL主从配置,从节点ip地址后三位
server-id=133
# 配置不需要复制的库mysql
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
# 标记出需要同步的数据库名,在多从配置时可以按需配置
#replicate_do_db=table_name
# 可以配置的值:0/1/2;
# 0、效率最高,最不安全;
# 1、最安全,但是效率最低;
# 2、安全和效率平衡的取舍,在服务器系统挂掉的情况下会丢失数据;
innodb_flush_log_at_trx_commit=2
# 每进行n次事务提交之后,MySQL将binlog_cache中的数据强制写入磁盘。
sync_binlog=1000
# 根据实际情况决定开启多少个线程用于主从复制
slave_parallel_workers=4
# 基于组提交的并行复制方式
slave_parallel_type=logical_clock
master_info_repository=TABLE
relay_log_info_repository=TABLE
# 避免由于从库relay log损坏导致的主从不一致的情形
relay_log_recovery=ON
# 启动MySQL二进制日志,即数据同步语句,从数据库会一条一条的执行这些语句。
log_bin=slave-bin.log
log_bin_index=slave-bin.index
################################################
2、从节点配置过程:
# 登录mysql
$ mysql -u root -p
# 关闭从库
mysql> stop slave;
# 配置主库信息:ip,用户,密码
# 日志参数(show master status; #
查看主库的状态中的File参数,参数动态
)
# 主服务器positon参数(show master status; #
查看主库的状态中的position参数,参数动态
)
mysql> change master to master_host='192.168.100.130', master_user='testuser',master_password='aA123456/', master_log_file='master-bin.000001', master_log_pos=154;
# 开启从库
mysql> start slave;
# 再次查看
mysql> show slave status \G;
![](https://i-blog.csdnimg.cn/blog_migrate/afbbbd113270eb9c8713c2078b464647.png)
# Slave_IO_Running,Slave_SQL_Running 都为Yes的时候表示配置成功
验证主从
主库上操作如下:
#
每一步操作走可以在主从库两边对照。从节点对应生成数据库、表、更新等操作
# 也可以使用Navicat同时链接主从库对照。
mysql> create database springdemo;mysql> use springdemo;mysql> create table test_table(id int(3),name char(10));mysql> insert into test_table values(1,'one');mysql> show databases;
注
1. 对于Slave_SQL_Running:no或slave_io_running:no的问题,可以参考此链接:
https://blog.csdn.net/HeyShHeyou/article/details/109628068
2. 对于Slave_SQL_Running:no的情况,可以尝试多试几次上述链接中的第三点的操作:
MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;