一主一从
准备:两台服务器A、B
操作:
1. 安装 mariadb
两台服务器分别安装好Mariadb
#安装mariadb
sudo yum install mariadb-server
#开启
sudo systemctl start mariadb
#设置开机自动启动
sudo systemctl enable mariadb
#查看状态
sudo systemctl status mariadb
#设置初始密码
sudo mysql_secure_installation
2. 配置主从服务器
分别修改下my.cnf
服务器A:主
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log_bin = /var/lib/mysql/bin-log
log_bin_index = /var/lib/mysql/mysql-bin.index
expire_logs_days = 7
server_id = 160 #主从配置
binlog_format = ROW
服务器B:从
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log_bin = /var/lib/mysql/bin-log
log_bin_index = /var/lib/mysql/mysql-bin.index
expire_logs_days = 7
binlog_format = ROW
# 主从配置
server-id=162
修改完成后重启Mariadb服务
systemctl restart mariadb.service
在主服务器上建立帐户并授权slave
gant replication slave on *.* to root@10.10.10.100 identified by '123456';
flush privileges;
# ps: 10.10.10.100 为从服务器的ip
# 123456 为从服务器的MySQL密码
3. 登录主服务器的mysql,查询master的状态
show master status;
4. 配置从服务器 Slave
change master to master_host='10.10.0.002',master_user='root',master_password='123456',master_log_file='bin-log.000002',master_log_pos=2759;
# ps:10.10.0.002 为主服务器ip
# bin-log.000002 为上面第三点的 File
# 2759为上面第三点的 Position
# 启动从服务器复制功能
start slave;
# 检查从服务器复制功能状态
show slave status\G
5. 为了保证主从数据一致,设置从服务器为只读
show global variables like 'read%'; // 查看 read_only 状态
set global read_only=1; // 当前环境生效,重启后失效
# 可以到 /etc/my.cnf 添加一行 read_only=1,然后重启即可
6. 其他
主从没有同步
#查看Master库状态
show processlist;
show master status;
#再到Slave上查看
show slave status\G
发现从库没有执行SQL
Slave_IO_Running: Yes Slave_SQL_Running: No
可以忽略错误后,继续同步,这种方法适用于主从库数据相差不大,或者要求数据可以不完全统一的情况,数据要求不严格的情况
stop slave;
#表示跳过一步错误,后面的数字可变
set global sql_slave_skip_counter =1;
start slave;
之后再用mysql> show slave status\G 查看
mysql> show slave status\G Slave_IO_Running: Yes Slave_SQL_Running: Yes
现在主从同步状态正常了
如果是需要同步主库之前的数据,需要先在主库备份好,然后将备份文件发送到从库的服务器,在从库执行后,才会重新同步
参考链接:
https://blog.csdn.net/qq_32248673/article/details/59055972
https://segmentfault.com/a/1190000038663356
https://blog.starryvoid.com/archives/349.html#1Mariadb
https://dev.mysql.com/doc/refman/5.7/en/replication-configuration.html