centos7部署mysql8.0.35,主从复制,主主集群

一、安装mysql

Linux系统centos7安装、配置、远程连接mysql8.0.35、开机自启动(究级无敌宇宙第一详细)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/zaixiaqin/article/details/134619062?spm=1001.2014.3001.5501

二、主从复制模式

前置条件:两台机器ip分别为:192.168.40.128(master),192.168.40.129(slave)。

1. 主机配置 

首先需要修改主机128的mysql配置

vim /etc/my.cnf

添加如下内容

# 服务器标识符, 确保每台服务器标识符都不一样 取值范围 1-2^32,默认为1 
server-id = 1000
# 是否只读,1 代表只读,0 代表读写
read-only=0
# 忽略的数据,指不需要同步的数据库
# binlog-ignore-db=mysql
# 指定同步的数据库
# binlog-do-db=db01

重启mysql

service mysqld restart

 重启成功后登录mysql

mysql -uroot -p

 2. 主机创建用户

创建从机连接主机的用户

create user 'slave129'@'%' identified with mysql_native_password by '123456';
# 这里可以加上 with mysql_native_password 参数,因为 mysql8 的默认加密方式为 
caching_sha2_password,后面从机连接主库可能会出现错误,后面 2.3 会提到。

给该用户分配复制权限

grant replication slave on *.* to 'slave129'@'%';

查看该主机的二进制文件坐标

show master status;
# file:从哪个日志开始推送日志文件
# position:从哪个位置开始推送日志
# binlog_ignore_db:指定不需要同步的数据库

 到这里为止,主机不要执行任何DDL或者DML操作!!!!

 3. 从机配置

修改129的mysql配置

vim /etc/my.cnf

 添加如下内容

server-id=1130  # 一定不能与主机一致
read-only=1
super-read-only=1  # 超级用户的读写权限设置为只读

重启mysql

service mysqld restart

登录mysql

mysql -uroot -p

 连接主机

change replication source to source_host='192.168.40.128',source_user='slave129',source_password='123456',source_log_file='mysql-bin.000012',source_log_pos=913;

#8.0.23以前版本语法
change master to master_host='xxx.xxx.xx.xx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;

 注意:

  • 参数设置为自己的,source_log_file 和 source_log_pos 要设置为主机show master status查询出来的结果,步骤 2.2 最后一张图。
  • 如果在主机中创建用户时没有添加 with mysql_native_password 参数,则需要在执行上面语句时再在后面添加 master_connect_retry=30,get_master_public_key=1,添加后指令如下所示:
change replication source to source_host='192.168.40.128',source_user='slave129',source_password='123456',source_log_file='mysql-bin.000012',source_log_pos=913,master_connect_retry=30,get_master_public_key=1;

启动主从复制

start replica;   # 8.0.23+ 版本
start slave;

4. 查看连接

从机中查看主从关系

show slave status\G

图中标记的两个字段为 yes ,则主从复制搭建成功。否则查看 Last_IO_ERROR 字段报错内容。

5. 测试主从复制 

主机创建新表,查看从机是否正常复制。下面是建表测试语句,在主机中执行。

create database demo;	
create table student (
	sid int(10) primary key auto_increment,
    sname varchar(16),
    sage int(10),
    ssex varchar(10)
) engine = Innodb default charset = utf8mb4 comment = "学生表";
insert into student (sname,sage,ssex) values('zhangsan', 29, '男');

 从机中查看是否能复制该表内容即可。

三、 主主模式

主主模式需要注意自增主键的重复问题,采取的策略是一台机器以奇数自增,一台机器以偶数自增。

1. 修改原从机

修改129机器配置

vim /etc/my.cnf

 添加以下内容,129机器自增主键以偶数增长

auto_increment_increment=2  # 自增步长
auto_increment_offset=2  # 偏移量

 保存退出重启mysql

service mysqld restart

 重启、登录mysql后创建128连接129的用户,并配置权限

create user 'slave128'@'%'identidied with mysql_native_password by '123456';
grant replication slave on *.* to 'slave128'@'%';

 查看该机器的 master 信息

show status master;

 在此后,不要再在该机器上执行DDL、DML语句,直到主主集群配置完成!!!

2. 修改原主机 

在上面搭建的主从模式基础上,修改机器128配置。

vim /etc/my.cnf

添加下面内容,这样配置,128机器自增主键以奇数增长。

auto_increment_increment=2  # 增量为 2
auto_increment_offset=1  # 偏移量为 1 

重启128的mysql

service mysqld restart

使用129服务器MySQL创建的 slave128 账号连接 129。

change replication source to source_host='192.168.40.129',source_user='slave128',source_password='123456',source_log_file='mysql-bin.000006',source_log_pos=362;

#8.0.23以前版本语法
change master to master_host='xxx.xxx.xx.xx',master_user='xxx',master_password='xxx',master_log_file='xxx',master_log_pos=xxx;

启动主从连接

start replica;  # 8.0.23 版本后支持
start slave;

 查看从机信息

show slave status\G
show replica status\G  # 8.0.23 版本后支持

如图所示,两台机器上查看主从信息,图中标记的内容均为 yes,则主主集群搭建成功。 

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
CentOS 7下配置MySQL 5.7.22的主从复制,需要以下步骤: 1.安装MySQL 5.7.22版本 在CentOS 7上安装MySQL 5.7.22,可以使用如下命令: ``` sudo yum install mysql-server ``` 2.配置主服务器 在主服务器的配置文件`/etc/my.cnf`中添加如下内容: ``` server-id=1 log-bin=mysql-bin binlog-do-db=test ``` 其中,`server-id`表示服务器的ID,`log-bin`表示开启二进制日志,`binlog-do-db`表示指定需要同步的数据库名称。 3.重新启动MySQL服务器 在修改了配置文件后,需要重新启动MySQL服务器: ``` sudo systemctl restart mysqld ``` 4.创建用于复制的用户 在主服务器上创建一个用于复制的用户,并授予复制权限: ``` GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 其中,`slave_user`是用于复制的用户名,`password`是用户密码。 5.查看主服务器状态 在主服务器上运行如下命令查看主服务器状态: ``` SHOW MASTER STATUS; ``` 记录下`File`和`Position`的值,备用。 6.配置从服务器 在从服务器的配置文件`/etc/my.cnf`中添加如下内容: ``` server-id=2 replicate-do-db=test ``` 其中,`server-id`表示服务器的ID,`replicate-do-db`表示指定需要同步的数据库名称。 7.重新启动MySQL服务器 在修改了配置文件后,需要重新启动MySQL服务器: ``` sudo systemctl restart mysqld ``` 8.设置从服务器复制主服务器 在从服务器上运行如下命令,设置从服务器复制主服务器: ``` CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file_name', MASTER_LOG_POS=master_log_pos; ``` 其中,`master_host_name`是主服务器的IP地址或主机名,`slave_user`和`password`是用于复制的用户名和密码,`master_log_file_name`和`master_log_pos`是之前在主服务器上记录的值。 9.启动从服务器复制 在从服务器上运行如下命令,启动从服务器复制: ``` START SLAVE; ``` 10.查看从服务器状态 在从服务器上运行如下命令查看从服务器状态: ``` SHOW SLAVE STATUS\G ``` 如果输出中`Slave_IO_Running`和`Slave_SQL_Running`的值都为`Yes`,则表示从服务器已经成功复制主服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yax1n9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值