環境信息
操作系統 | CentOS7.6 x64 |
---|---|
Docker版本 | 1.13.1 |
安裝docker
使用yum安裝docker
yum install -y docker
查看是否安裝docker
yum list installed | grep docker
安裝成功如圖
啓動docker
systemctl start docker
查看docker是否啓動成功
systemctl status docker
成功如圖
docker安裝mysql
拉取mysql鏡像,可以使用docker pull mysql:latest獲取最新mysql鏡像
docker pull mysql:5.7
查看鏡像是否拉取成功
docker images
創建主數據庫
docker run --name mysql-master -p 3337:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
創建從數據庫
docker run --name mysql-slave -p 3338:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
查看dcoker容器
docker ps -a
配置主數據庫
進入master容器
docker exec -it mysql-master /bin/bash
登錄mysql
mysql -u root -p123456
修改root權限,可以通過任何客戶端連接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改 MySQL 配置文檔 /etc/mysql/mysql.conf.d/mysqld.cnf
,在 [mysqld]
段添加以下配置:
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=1 //[必須]服務器標識ID,每臺服務器唯一
你可能會遇到bash: vi: command not found,這是因爲vim沒有安裝,可以使用如下命令安裝:
apt-get update
apt-get install vim
配置從數據庫
進入slave容器
docker exec -it mysql-slave /bin/bash
登錄mysql
mysql -u root -p123456
修改root權限,可以通過任何客戶端連接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改 MySQL 配置文檔 /etc/mysql/mysql.conf.d/mysqld.cnf
,在 [mysqld]
段添加以下配置:
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=2 //[必須]服務器標識ID,每臺服務器唯一
主從配置
記得在配置完主數據和從數據庫後要重啓數據庫,紅線處就是容器ID
docker restart <容器 ID> 重啓容器
連接主數據庫,查看數據庫狀態
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
記錄 File 的值和 Position 的值,等會配置 slave 服務器的時候要用
連接從數據庫,配置主從複製
mysql>change master to
master_host='x.x.x.x', // 這裏填 master 主機 ip
master_user='root',
master_log_file='mysql-bin.000001', // 這裏填寫 File 的值
master_log_pos=154, // 這裏填寫 Position 的值。
master_port=3337,
master_password='123456';
Query OK, 0 rows affected, 2 warnings (0.03 sec)
mysql> start slave; // 啓動從服務器複製功能
Query OK, 0 rows affected (0.01 sec)
如果不小心配置錯, 輸入 mysql> stop slave; 然後再錄入一遍就可以了。
查看主從連接狀態,圖中紅色框內兩個必須位yes才表示成功
show slave status\G
然後你就可以使用navicat連接主從數據庫,記得連接數據庫的端口爲你3306映射到的端口號。連接成功後,你操作主數據庫,你會發現從數據庫也進行了同樣的操作