Linux 安裝Docker 部署MySQL主從複製

安裝dockers  參考 https://www.cnblogs.com/xiufengchen/p/10387055.html  

docker 部署MySQL主從  參考  https://blog.csdn.net/ClassmateLin/article/details/100512910

安裝docker

一 docker安裝:

  1 首先需要檢查linux內核的版本,docker要求linux內核是在3.10之上的,

1

uname -r

  

2 更新yum源,注意這步應該是管理員權限,如果當前不是管理員,切換至管理員登錄,在更新過程需要輸入 y 確認

sudo yum update

3 卸載舊版本的docker

sudo yum remove docker  docker-common docker-selinux docker-engine

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

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

5 設置yum源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

以上三個命令執行的結果

 

 

 

6 可以查看所有倉庫中所有docker版本,並選擇特定版本安裝

yum list docker-ce --showduplicates | sort -r

 

 

7 安裝docker ,一下命令只需要執行一個就可以了.

sudo yum install docker-ce  #由於repo中默認只開啓stable倉庫,故這裏安裝的是最新穩定版17.12.0
 sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

8 啓動並加入開機啓動

 sudo systemctl start docker
 sudo systemctl enable docker

 

 9 查看docker的版本

docker version

 

 

 

docker 部署mysql 主從

獲取Mysql鏡像
網易蜂巢鏡像:
拉取鏡像:

docker pull hub.c.163.com/library/mysql:latest
查看鏡像:docker images

創建文件夾和配置文件
 mkdir -p /docker/mysql/{master,slave}/data

 

添加主庫配置文件: vim /docker/mysql/master/my.cnf

[mysqld]

user=mysql

log-bin=mysql-bin

server-id=1

character-set-server=utf8mb4

default_authentication_plugin=mysql_native_password

table_definition_cache=400

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

 

 

 

 

添加從庫配置文件:sudo vim /docker/mysql/slave/my.cnf

[mysqld]                                                                             

user=mysql

server-id=2

character-set-server=utf8mb4

default_authentication_plugin=mysql_native_password

table_definition_cache=400

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

創建Mysql橋接網絡,用於主從容器直接互聯:
docker network create mysql

 

 

創建Mysql主庫容器:

 

docker run -d --privileged=true -p 3307:3306 -v /docker/mysql/master/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/master/data:/var/lib/mysql -v /docker/mysql/master/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master --network       mysql --network-alias mysql-master mysql           

 

 

創建Mysql從庫容器:

 docker run -d --privileged=true -p 3308:3306 -v /docker/mysql/slave/my.cnf:/etc/mysql/my.cnf -v /docker/mysql/slave1/data:/var/lib/mysql -v /docker/mysql/slave/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave --network mysql --network-alias mysql-slave mysql

配置Mysql主從複製
配置主服務器:
docker exec -it mysql-master bash
mysql -u root -p 

 密碼是上面docker命令中MYSQL_ROOT_PASSWORD中設置的。

# 這裏使用root用戶進行主從複製, %爲允許所有ip進行復制。

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';

 

# 刷新權限

flush privileges;

# 查看主服務器狀態

show master status;

#需要記錄其中的File,  Position字段內容

exit; # 退出mysql

exit; # 退出容器

 

 

這裏開啓主庫遠程訪問權限如果從庫遠程連接也同理

 

命令:use mysql;

命令:select host,user from user;

命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

命令:flush privileges;

 

配置從服務器:

docker ps


docker exec -it mysql-slave bash
mysql -u root -p 密碼是上面docker命令中 MYSQL_ROOT_PASSWORD中設置的

 

#輸入以下內容

change master to master_host='mysql-master',master_user='root',master_password='root密碼',master_log_file='剛纔記住的File列的內容',master_log_pos=position的內容(不用加引號),master_port=3306;

 

# 例如

change master to master_host='mysql-master',master_user='root',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=502,master_port=3306;

 

# 啓動slave

start slave;

# 查看slave狀態

show slave status\G;

 

 

Slave_IO_RunningSlave SQL Ruing都是Yes時,說明配置成功了,

 

測試主從複製
進入主庫:docker exec -it mysql-master bashmysql -u root -p
創建數據庫和表,添加測試數據:

創建數據庫

create database goods;

 

進入數據庫

use goods;

 

查看當前數據庫

select database();

 

查看當前數據庫裏面的表

show tables;

 

 

創建test表

 create table test(

    id int,

city varchar(255));

 

向表中插入數據

insert into test values (1,'beijing'),(2,'shanghai');

 

查看錶裏的數據

select * from test;

 

 

進入從庫:

docker exec -it mysql-slave bash 和 mysql -u root -p
驗證數據是否同步:

show databases;

use goods;

show tables;

select * from test;

mysql 主從庫配置完成

但是發現一個問題

在從庫上操作增刪改 的數據,主庫不跟着變動

主庫 上操作增刪改 的數據 ,從庫跟着變動

 

 

 

 

 

 

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