3、MySQL 8.0.20在Linux(centos 8)上搭建主從複製

1 Master上配置

創建2個Mysql 數據庫服務,並啓動兩個Mysql服務

1.1 配置Master庫的/etc/my.cnf

[mysqld]
bind-address = 0.0.0.0
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
port=3306
# 修改加密方式(8.0+關鍵配置)
default_authentication_plugin = mysql_native_password

# Master
# 開啓日誌
log-bin = mysql-bin
# 日誌格式按行同步
binlog-format = ROW
# 設置服務id,主從不能一致
server-id = 1
# 設置需要同步的數據庫
binlog-do-db = testdb
# 設置忽略系統庫同步
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

#character config

1.2 主要配置

# Master
# 開啓日誌
log-bin = mysql-bin
# 日誌格式按行同步
binlog-format = ROW
# 設置服務id,主從不能一致
server-id = 1
# 設置需要同步的數據庫
binlog-do-db = testdb
# 設置忽略系統庫同步
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = performance_schema
binlog-ignore-db = sys

2 Slave上配置

2.1 配置Slave庫的/etc/my.cnf

[mysqld]
bind-address = 0.0.0.0
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
port=3306
# 修改加密方式(8.0+關鍵配置)
default_authentication_plugin = mysql_native_password

# Slave
# 開啓日誌
log-bin = mysql-bin
# 日誌按照行進行數據同步
binlog-format = ROW
# 設置服務id,主從不能一致
server-id = 2
# 設置需要同步的數據庫
replicate-do-db = testdb

# 設置忽略系統庫
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys

# 設置忽略系統庫
# binlog-ignore-db = mysql
# binlog-ignore-db = information_schema
# binlog-ignore-db = performance_schema
# binlog-ignore-db = sys

# 設置忽略系統庫所有表
#replicate_wild_ignore_table = mysql.%
#replicate_wild_ignore_table = information_schema.%
#replicate_wild_ignore_table = performance_schema.%
#replicate_wild_ignore_table = sys.%

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# #character config
character_set_server=utf8mb4

# [mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid

# MySQL兼容問題,需要修改數據庫的認證方式
# MySQL8.0版本默認的認證方式是caching_sha2_password
# MySQL5.7版本則爲mysql_native_password
# default_authentication_plugin=mysql_native_password

# include all files from the config directory
!includedir /etc/my.cnf.d

2.2 主要配置

# Slave
# 開啓日誌
log-bin = mysql-bin
# 日誌按照行進行數據同步
binlog-format = ROW
# 設置服務id,主從不能一致
server-id = 2

# 設置需要同步的數據庫
replicate-do-db = testdb

# 設置忽略系統庫
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys

3 Master上創建用於主從復置的賬號

mysql -uroot -p123456 -h192.168.124.12

CREATE USER 'sync'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 授權主備複製專用賬號 
GRANT REPLICATION SLAVE ON *.* TO 'sync'@'%';

#顯示賬戶的權限
show grants for sync;

# 刷新權限 
flush privileges;

# 確認位點,記錄下文件名及位點 
show master status;

4 Slave上設置從庫向主庫同步

# 首先切換到從庫登錄 
mysql -uroot -p123456 -h192.168.124.11 -P3306

# 先停止同步
stop slave;

# 修改從庫指向到主庫,使用上一步記錄的文件名以及位點
CHANGE MASTER TO 
master_host='192.168.124.12',
master_port=3306,
master_user='sync',
master_password='123456',
master_log_file='mysql-bin.000011',
master_log_pos=3214;

# 啓動同步 
start slave;

# 查看slave 的狀態 
show slave status;

在這裏插入圖片描述
需要注意的是上方的兩個字段都爲YES纔算成功。

5 創建數據庫數據表

CREATE SCHEMA `testdb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;
CREATE TABLE `testdb`.`t_user` (
  `id` BIGINT NOT NULL,
  `name` VARCHAR(45) NOT NULL,
  `age` INT NOT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_unicode_ci;

需要注意的是兩邊的數據庫和表要使用相同的字符集編碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章