侧边栏壁纸

MySQL主从复制实现

2023年06月13日 187阅读 0评论 5点赞

MySQL

一、介绍

首先说明下两者的区别:
1)一主一从:数据主要写入主库,从库作为备库,实时地将主库数据同步到备库
2)双主:两个数据库同时为主库和从库,互为主从,任意一个库数据更新都会同步到另外一个库

建议在配置搭建MySQL双主环境时,最好先看下一主一从的配置,因为里面有很多相似的地方,只有在配置上稍微有点不同。

二、前期准备

首先准备两个MySQL数据库,相关ip信息仍然如下:

名称IP
111库(主)192.168.100.111
112库(备)192.168.100.112

三、搭建步骤

1、先配置111库
1)在 /etc/my.cnfmysql核心配置文件的[mysqld]节点内,新增如下配置:

server-id=1    #服务器 id,随意,但要唯一
log-bin=mysql-bin   #二进制文件存放路径
replicate-ignore-db = mysql,information_schema,performance_schema #忽略同步的库
binlog-ignore-db=mysql #不同步的数据库日志

#需要同步的库
#replicate-do-db = scada
#待同步的数据库日志
#binlog-do-db=scada

2)创建专门用于主从复制用户账号。因此使用root账户登录mysql,并执行一些指令:

#登录
mysql -u root -p密码

#修改Mysql密码难度策略
set global validate_password_policy=0;
set global validate_password_length=1;


#创建用户 我这里用户名为copyuser,注意这里的ip是112库的ip
CREATE USER 'copyuser'@'192.168.100.112' IDENTIFIED WITH mysql_native_password BY '123456';
#给主从复制账号授权
grant replication slave on *.* to 'copyuser'@'192.168.100.112';

3)重启主库的mysql

systemctl restart mysql

4)再次登录mysql

mysql -uroot -p

5)使用如下指令查看master的状态:

show master status;

结果类似如下:我们需要关注File和Position的信息,后面要用到。

MySQL

2、再配置112库

1)同样的,我们在 /etc/my.cnfmysql核心配置文件的[mysqld]节点内,新增如下配置:

server-id=2    #服务器 id,随意,但要唯一
log-bin=mysql-bin   #二进制文件存放路径

2)然后我们重启112库的mysql

systemctl restart mysql

3、实现主从复制

在112库上具体执行如下:

#1,登录mysql,然后执行以下代码
mysql -u root -p

#2,关闭状态
stop slave;

#3,设置同步,注意这里是111库的ip,日志名称和位置是111库上的记下的file和postion
change master to master_host='192.168.100.111',master_user='copyuser',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=157;

#4,开启从库
start slave; 

# 5,检查服务器状态
show slave status \G

最后在检测服务器状态时,应该类似如下图:

MySQL

最后在主库中写入数据,看看是否都同步给了对方,如果都能正常同步,说明就没有问题了。

5

—— 评论区 ——

昵称
邮箱
网址
取消
站点公告

如果你有好的文章,不妨留言分享一下,互相借鉴,互相学习。

人生倒计时
舔狗日记