$ docker pull mysql:8.0.26$ mkdir -p /home/apps/mysql-master/{config,log,data}$ docker run -d --name mysql-master \
--restart=always \
--privileged=true \
-p 3310:3306 \
-v /home/apps/mysql-master/config:/etc/mysql/conf.d \
-v /home/apps/mysql-master/log:/var/log/mysql \
-v /home/apps/mysql-master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.26$ vim /home/apps/mysql-master/config/my.cnf點擊上方圖片,打開小程序,『餓了麼外賣』紅包免費領!
添加以下內容
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
3創建 Slave 實例# 創建目錄
$ mkdir -p /home/apps/mysql-slave-01/{config,log,data}
# 啟動容器
$ docker run -d --name mysql-slave-01 \
--restart=always \
--privileged=true \
-p 3310:3306 \
-v /home/apps/mysql-slave-01/config:/etc/mysql/conf.d \
-v /home/apps/mysql-slave-01/log:/var/log/mysql \
-v /home/apps/mysql-slave-01/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:8.0.26
# 修改 Slave 基本配置
$ vim /home/apps/mysql-slave-01/config/my.cnf
# 添加以下內容
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
4主從配置$ vim /home/apps/mysql-master/config/my.cnf
server_id=1
# 開啟二進位日誌
log-bin=mysql-bin
read-only=0
# 需要同步的資料庫
binlog-do-db=rapid-cloud
binlog-do-db=rapid-cloud-test
# 需要忽略的資料庫
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema$ docker restart mysql-master$ vim /home/apps/mysql-slave-01/config/my.cnf
server_id=2
log-bin=mysql-bin
read-only=1
binlog-do-db=rapid-cloud
binlog-do-db=rapid-cloud-test
replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema$ docker restart mysql-slave-01# 進入容器
$ docker exec -it mysql-master /bin/bash
# 進入主庫mysql資料庫
$ mysql -u root -p
# 授權root可以遠程訪問( 主從無關,為了方便我們遠程連接mysql)
# 授權遠程
mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新
mysql>flush privileges;
# 創建backup用戶
# 應先創建新用戶
mysql>create user 'backup'@'%' identified by '123456';
# 執行授權
mysql>grant all privileges on *.* to 'backup'@'%';
# 刷新
mysql>flush privileges;
# 授權遠程
mysql>ALTER USER 'backup'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新
mysql>flush privileges;
# 查看主庫狀態
mysql>show master status;# 進入容器
$ docker exec -it mysql-slave-01 /bin/bash
# 進入主庫mysql資料庫
$ mysql -u root -p
mysql> change master to master_host='192.168.3.13',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3310;
將主庫binlog清除一下,這樣它的位置就從0開始了mysql>purge master logs to'mysql-bin.000001';# 開始同步
mysql>start slave;
# 停止同步
mysql>stop slave;
# 查看同步狀態
mysql>show slave status\G;
主從資料庫在自己配置文件中聲明需要同步哪個資料庫,忽略哪個資料庫等信息。並且 server-id 不能一樣5參考https://www.cnblogs.com/heian99/p/12104189.htmlhttps://blog.csdn.net/lilygg/article/details/98187015https://www.cnblogs.com/kiko2014551511/p/11532426.html本文轉載自:「 博客園 」,原文:https://tinyurl.com/2nsmcate ,版權歸原作者所有。歡迎投稿,投稿郵箱: editor@hi-linux.com。