一. 安裝docker
$ yum -y install docker
$ docker -v
Docker version 1.13.1, build 7f2769b/1.13.1
# 啟動docker
$ systemctl enable docker
$ systemctl start docker
# 配置鏡像源
$ vim /etc/docker/daemon.json
{
"registry-mirrors": ["[http://hub-mirror.c.163.com](https://links.jianshu.com/go?to=http%3A%2F%2Fhub-mirror.c.163.com%2F)"]
}
$ systemctl daemon-reload
# service restart docker
二. 下載mysql鏡像
#查詢mysql
$ docker search mysql
# 下載mysql鏡像
$ docker pull mysql
#查詢鏡像
$ docker images
三. 配置master、slave1、shave2 的my.cnf文件
master
[mysqld]
symbolic-links=0
#實例ID,必須唯一
server-id=1
#開啟binlog
log-bin=mysql-bin
#需要同步的數(shù)據(jù)庫
binlog-do-db=db_shop
#不需要同步的數(shù)據(jù)庫
binlog-ignore-db=mysql
binlog-ignore-db=test
binlog-ignore-db=information_schema
binlog-ignore-db=personalsite
#如果錯誤跳過
slave-skip-errors = all
slave 1
[mysqld]
symbolic-links=0
#實例ID
server-id=2
#開啟binlog 從庫可以不開啟
# log-bin=mysql-bin
#需要同步的數(shù)據(jù)庫
replicate-do-db=db_shop
#不需要同步的數(shù)據(jù)庫
replicate-ignore-db=mysql
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=personalsite
#如果錯誤跳過
slave-skip-errors = all
slave2
[mysqld]
symbolic-links=0
#實例ID
server-id=3
#開啟binlog 從庫可以不開啟
# log-bin=mysql-bin
#需要同步的數(shù)據(jù)庫
replicate-do-db=db_shop
#不需要同步的數(shù)據(jù)庫
replicate-ignore-db=mysql
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=personalsite
#如果錯誤跳過
slave-skip-errors = all
四.創(chuàng)建docker容器
- 主庫master
$ docker run --name mysql-master -v /etc/mysql-cluster/master:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3316:3306 -d mysql:latest
- 從庫salve1
$ docker run --name mysql-slave1 -v /etc/mysql-cluster/slave1:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3326:3306 -d mysql:latest
- 從庫salve2
$docker run --name mysql-slave2 -v /etc/mysql-cluster/slave2:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3336:3306 -d mysql:latest
查看docker容器
$ docker ps
#輸出三個容器
- 設置外部訪問權(quán)限,master槽袄、slave1、slave2
# 進入容器
$ docker exec -it mysql-master bash
#進入數(shù)據(jù)庫
$ mysql -uroot -p123456
#查詢是否有 %的記錄
$ > select host,user,plugin,authentication_string from mysql.user;
#設置遠端訪問權(quán)限
$ > ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#刷新權(quán)限
$ > flush privileges;
#退出mysql
$ > exit;
#退出容器
$ exit
五. 使用SQL工具連接數(shù)據(jù)庫
如:docker宿主機IP 192.168.56.120
主庫master: 192.168.56.120:3316 root 123456
#sql工具命令行執(zhí)行,查看狀態(tài)
$ > show master status
從庫slave1: 192.168.56.120:3326 root 123456
從庫slave2: 192.168.56.120:3336 root 123456
# sql工具命令行執(zhí)行撒会,查看狀態(tài)
$> show slave status
六. 使用sql工具的命令行工具,建立主從關系
在slave1 和 slave2 執(zhí)行:
創(chuàng)建主從關系
> change master to master_host ='192.168.56.120',master_port=3316, master_user='root', master_password='123456';
# 啟動slave
> start slave
配置創(chuàng)建成功!
- 在master中創(chuàng)建 db_shop 數(shù)據(jù)庫控嗜,從庫既可以同步茧彤。
七. 使用Atlas 做代理
- 下載Atlas
Atlas的安裝:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md
Atlas下載地址: [https://github.com/Qihoo360/Atlas/releases]
- 下載Atlas
- 安裝
$ wget https://github.com/Qihoo360/Atlas/releases/download/2.2.1/Atlas-2.2.1.el6.x86_64.rpm
$ rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
- 配置config文件
$ cd /usr/local/mysql-proxy/conf/
#修改配置
$ vim test.cnf
[mysql-proxy]
#帶#號的為非必需的配置項目
#管理接口的用戶名
admin-username = user
#管理接口的密碼
admin-password = pwd
#Atlas后端連接的MySQL主庫的IP和端口,可設置多項疆栏,用逗號分隔
proxy-backend-addresses = 127.0.0.1:3316
#Atlas后端連接的MySQL從庫的IP和端口曾掂,@后面的數(shù)字代表權(quán)重惫谤,用來作負載均衡,若省略則默認為1珠洗,可設置多項溜歪,用逗號分隔
proxy-read-only-backend-addresses = 127.0.0.1:3326@1,127.0.0.1:3336@1
#用戶名與其對應的加密過的MySQL密碼,密碼使用PREFIX/bin目錄下的加密程序encrypt加密许蓖,下行的user1和user2為示例蝴猪,將其替換為你的MySQL的用戶名和加密密碼!
pwds = root: /iZxz+0GRoA=
pwds 生成方式
$ cd /usr/local/mysql-proxy/bin/
$ ./encrypt 123456
# 見內(nèi)容
/iZxz+0GRoA=
- 設置啟動膊爪、重啟自阱、停止
cd /usr/local/mysql-proxy/
#啟動
$ ./mysql-proxyd test start
#重啟
$ ./mysql-proxyd test restart
#停止
$ ./mysql-proxyd test stop
- 啟動后使用mysql 工具連接
連接參數(shù) 192.168.56.120:1234@root 123456
- 啟動后使用mysql 工具連接
以上是簡單的數(shù)據(jù)庫主從配置,建議數(shù)據(jù)庫用物理機米酬,docker不是很放心沛豌。
以上內(nèi)容有視頻地址:https://www.bilibili.com/video/av62369270?p=3