MySQL8-主从搭建

三台服务器

192.168.56.70	主
192.168.56.71	从
192.168.56.72	从

关闭防火墙

停止:systemctl stop firewalld 
禁用:systemctl disable firewalld

配置免密

Linux配置免密

主从节点都安装启动

wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
yum localinstall mysql80-community-release-el7-5.noarch.rpm
yum clean all
yum makecache
yum install -y mysql-community-server
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
yum list |grep mysql-community

修改MySQL密码

#查看root初始化密码
grep "password" /var/log/mysqld.log

mysql -uroot -p'取到的初始化密码'
#分别登录三台mysql
mysql -uroot -p'/=2KlUfHs>.o'
mysql -uroot -p'EiQtusd1=QL9'
mysql -uroot -p'O<E.GRsW_5ku'
--修改密码策略,三台都执行
--第一次 安装好mysql,要先修改下密码,再设置简单密码策略,否则会报错ERROR 1820 (HY000)
alter user user() identified by "Mysql=1357";

set global validate_password.policy=LOW;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0; 
set global validate_password.special_char_count=0; 
set global validate_password.length=1;
set global validate_password.check_user_name='OFF';
--这里将roo密码修改为 root
alter user user() identified by 'root';
登录MySQL
mysql -uroot -p'root'

主节点添加主从同步账户(只在主节点执行)

--主节点添加主从同步账户
--只在主节点执行
CREATE USER 'copy'@'%' IDENTIFIED BY '123456';
alter user 'copy'@'%' identified with mysql_native_password by '123456';
grant all privileges on *.* to 'copy'@'%' with grant option;

开启二进制日志文件和添加server-id

#先停止MySQL
systemctl stop mysqld
vim /etc/my.cnf
--主节点添加
log-bin=mysql-bin
server-id=70
--从节点1添加,从数据库开启只读模式,避免和 主节点数据不一致
server-id=71
read_only = 1
super_read_only = 1
--从节点2添加,从数据库开启只读模式,避免和 主节点数据不一致
server-id=72
read_only = 1
super_read_only = 1
--注意,注意,注意,只有master节点有mysql-bin配置,每个节点的server-id必须不同
#启动MySQL
systemctl start mysqld

主节点mysql重置偏移量(只在主节点执行)

#只在主节点执行
mysql -uroot -proot
--重置偏移量如果不重置,从节点也会创建copy用户
reset master;
show master status;
--获取到二进制文件名字 : 
--mysql-bin.000001
--Position : 157
--这里获取的信息之后会用到

注册从节点(只在从节点执行)

--只在从节点执行
--参数解析:
--master_host : 主节点主机
--master_user : 第2步创建的主从同步账户
--master_port : 主节点mysql服务的端口号,因为没有这里改过所以是 3306
--master_password : 第2步创建的主从同步账户的密码
--master_log_file : 第4步获取的二进制文件名字
--master_log_pos : 第4步获取的Position值

stop slave;
reset slave;
change master to master_host='192.168.56.70',master_user='copy',master_port=3306,master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=157;

--启动 启动所有从节点的slave
start slave;
show slave status \G;
--以下两项必须是yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
--如果出现Slave_IO_Running: Connecting
--①可能防火墙没关
--②可能创建copy用户的时候,从节点也执行创建了,从节点删除copy用户,重新执行本步骤

测试主从

主节点创建数据库,在从节点查询;

MySQL主从修复

重新执行步骤:
主节点mysql重置偏移量(只在主节点执行)
注册从节点(只在从节点执行)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Docker Compose 来搭建 MySQL 8.0 的主从复制。以下是一个示例的 `docker-compose.yml` 文件: ```yaml version: '3' services: master: image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_LOG_BIN: mysql-bin volumes: - ./master-data:/var/lib/mysql ports: - 3306:3306 slave: image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_LOG_BIN: mysql-bin MYSQL_MASTER_HOST: master MYSQL_MASTER_PORT: 3306 MYSQL_MASTER_USER: user MYSQL_MASTER_PASSWORD: password volumes: - ./slave-data:/var/lib/mysql ``` 在这个示例中,我们定义了两个服务:`master` 和 `slave`。`master` 使用 MySQL 8.0 镜像,并设置了必要的环境变量和卷挂载,以便持久化数据。`slave` 同样使用 MySQL 8.0 镜像,并设置了与 `master` 相关的环境变量。 你可以将上述内容保存为 `docker-compose.yml` 文件,然后在命令行中执行以下命令启动服务: ``` docker-compose up -d ``` 这将会启动两个容器,分别对应主库和从库。你可以通过访问 `localhost:3306` 来访问主库,使用 `localhost:3307` 来访问从库。 当容器启动后,你可以登录到主库中创建一个测试数据库,并向其中插入一些数据。然后,这些数据将会通过主从复制同步到从库中。 希望这个示例对你有所帮助!如果你有任何问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值