mysql 8.4.2 主从配置

mysql 8.4.2 主从配置

背景知识

密码方式

mysql 的默认的密码方式"caching_sha2_password",以前常用的“mysql_native_password”方式在mysql v8.4中是disabled。使用“caching_sha2_password” 做主从的时候是比较复杂的,需要开启ssl,所以开启“mysql_native_password”是一个偷懒的选择。

log-bin

用docker启动master和slave

docker-compose.yml:

services:
  master:
    image: mysql:8.4.2
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: your_password
    volumes:
      - ./master/data:/var/lib/mysql
      - ./master/log:/var/log
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --mysql_native_password=on # 指定密码方式
      --server-id=1
      --log-bin=binlog
      --binlog_do_db=test # 可以指定多个数据库,逗号分割,或者删除这一条目,不做限制      
    restart: always
  slave:
    image: mysql:8.4.2
    ports:
      - "3307:3306"
    environment:
      MYSQL_ROOT_PASSWORD: your_password
    volumes:
      - ./slave/data:/var/lib/mysql
      - ./slave/log:/var/log
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --mysql_native_password=on
      --server-id=2
      --log-bin=binlog
    restart: always

执行:

sudo docker-compose up -d

master 配置

# 创建可以进行备份的账户
CREATE USER 'repl'@'%' IDENTIFIED with mysql_native_password BY 'repl-password';
# CREATE USER 'repl'@'%' IDENTIFIED with caching_sha2_password BY 'repl-password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
# 查看LOG信息
SHOW BINARY LOG STATUS;
# 查看server-id
show variables like '%server%';

slave配置

# 启动备份服务
STOP REPLICA;
RESET REPLICA;  
# 指向master
CHANGE REPLICATION SOURCE TO 
	SOURCE_USER='repl', 
	SOURCE_PASSWORD='repl-password', 
	SOURCE_HOST='10.200.60.99',
	SOURCE_PORT=3306,
	SOURCE_LOG_FILE='binlog.000005',
	SOURCE_LOG_POS=1735,
	SOURCE_SSL = 1; # 使用caching_sha2_password,需要开启
	
# 启动从机	
START REPLICA;
# 查看从机状态,Replica_IO_Runing && Replica_SQL_Runing == true, 代表配置成功,就可以操作验证了。
SHOW REPLICA STATUS;
# 查看server-id
show variables like '%server%';

gtid

用docker启动master和slave

docker-compose.yml:

services:
  master:
    image: mysql:8.4.2
    ports:
      - "3310:3306"
    environment:
      MYSQL_ROOT_PASSWORD: your_password
    volumes:
      - ./master/data:/var/lib/mysql
      - ./master/log:/var/log
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --mysql_native_password=on
      --gtid_mode=ON
      --enforce_gtid_consistency=true
      --server_id=1
      --log-bin=binlog
      --binlog_format=row
      --log-slave-updates=1
    restart: always
  slave:
    image: mysql:8.4.2
    ports:
      - "3311:3306"
    environment:
      MYSQL_ROOT_PASSWORD: your_password
    volumes:
      - ./slave/data:/var/lib/mysql
      - ./slave/log:/var/log
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --gtid_mode=ON
      --enforce_gtid_consistency=true
      --server_id=2
      --log-bin=biglog
      --binlog_format=row
      --log-slave-updates=1
    restart: always

执行:

sudo docker-compose up -d

master 配置

# 创建可以进行备份的账户
CREATE USER 'repl'@'%' IDENTIFIED with mysql_native_password BY 'repl-password';
# CREATE USER 'repl'@'%' IDENTIFIED with caching_sha2_password BY 'repl-password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
# 查看LOG信息
SHOW BINARY LOG STATUS;
# 查看server-id
show variables like '%server%';

slave配置

# 启动备份服务
STOP REPLICA;
RESET REPLICA;  
# 指向master
CHANGE REPLICATION SOURCE TO 
	SOURCE_USER='repl', 
	SOURCE_PASSWORD='repl-password', 
	SOURCE_HOST='10.200.60.99',
	SOURCE_PORT=3310,
	SOURCE_AUTO_POSITION=1,
	SOURCE_SSL = 1; # 使用caching_sha2_password,需要开启
	
# 启动从机	
START REPLICA;
# 查看从机状态,Replica_IO_Runing && Replica_SQL_Runing == true, 代表配置成功,就可以操作验证了。
SHOW REPLICA STATUS;
# 查看server-id
show variables like '%server%';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值