docker部署主從 mysql

安裝Docker:

  1、Docker要求CentOS系統的內核版本高於 3.10 ,通過 uname -r 命令查看你當前的內核版本是否支持安賬docker

  2、更新yum包:sudo yum update

  3、安裝需要的軟件包,yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2

  4、設置yum源:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

  5、可以查看所有倉庫中所有docker版本,並選擇特定版本安裝:yum list docker-ce --showduplicates | sort -r

  6、安裝docker:sudo yum install docker-ce-17.12.0.ce

  7、啓動、設置開啓開機啓動

    sudo systemctl start docker

    sudo systemctl enable docker

  8、驗證安裝是否成功(有client和service兩部分表示docker安裝啓動都成功了):docker version

  9、查看docker啓動狀態:systemctl status docker(如下圖即啓動成功)

安裝mysql:

1.docker search mysql
2.docker pull mysql:5.7

3. 查看已經下載的鏡像

docker images

 

4.啓動容器

docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:5.7

5.查看容器

docker ps

6.進入到Master容器內部(配置主庫)

docker exec -it mysql5.7 /bin/bash

7.安裝vim

apt-get update

apt-get install vim

8.對my.cnf進行編輯

cd /etc/mysql

vi my.cnf

加入以下內容

[mysqld]
## 同一局域網內注意要唯一
server-id=100  
## 開啓二進制日誌功能,可以隨便取(關鍵)
log-bin=mysql-bin

9.服務重啓

service mysql restart

docker start mysql5.7

或者 

docker restart mysql5.7

10.進入容器,配置權限

docker exec -it 容器id /bin/bash

mysql -uroot -p

CREATE USER 'slave'@'%' IDENTIFIED BY '12345678';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

exit;

11.啓從庫

docker run -p 3340:3306 --name myslave -e MYSQL_ROOT_PASSWORD=12345678 -d mysql:5.7

12.對從庫my.cnf進行編輯

docker exec -it myslave /bin/bash

apt-get update

apt-get install vim

cd /etc/mysql

vi my.cnf

加入以下內容

[mysqld]
## 設置server_id,注意要唯一
server-id=101  
## 開啓二進制日誌功能,以備Slave作爲其它Slave的Master時使用
log-bin=mysql-slave-bin   
## relay_log配置中繼日誌
relay_log=edu-mysql-relay-bin

13.重啓從庫

service mysql restart

docker start myslave

14.查詢master host ip(獲得16中的master_host)

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql5.7

15.進入主庫,查詢庫名爲mysql的數據庫(獲得16中的master_log_file和master_log_pos)

show master status;

16.進入從庫,查詢庫名爲mysql的數據庫,執行sql設置主庫

change master to master_host='172.17.0.2', master_user='slave', master_password='12345678', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=154, master_connect_retry=30;

master_port:Master的端口號,指的是容器的端口號

master_user:用於數據同步的用戶

master_password:用於同步的用戶的密碼

master_log_file:指定 Slave 從哪個日誌文件開始複製數據,即15的 File 字段的值

master_log_pos:從哪個 Position 開始讀,即15的 Position 字段的值

master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒

17.在Slave 中的mysql終端執行,

show slave status;

18.SlaveIORunning 和 SlaveSQLRunning 都是No,因爲我們還沒有開啓主從複製過程。開啓主從複製過程,並且查看

start slave;

show slave status;

SlaveIORunning 和 SlaveSQLRunning 都是Yes,說明主從複製已經開啓。

(

mysql8.0 在navicat連接時出現1251錯誤是mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之後,加密規則是caching_sha2_password, 解決問題方法

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678'; #修改加密規則 

ALTER USER 'root'@'%' IDENTIFIED BY '12345678' PASSWORD EXPIRE NEVER; #更新一下用戶的密碼 

ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '12345678'; #修改加密規則 

ALTER USER 'slave'@'%' IDENTIFIED BY '12345678' PASSWORD EXPIRE NEVER; #更新一下用戶的密碼 

)

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