docker安裝mysql主從同步
阿新 • • 發佈:2018-12-26
docke-compose.yml
version: '3'
services:
master_mysql:
container_name: master_mysql
image: mysql:5.7
ports:
- '3306:3306'
volumes:
- './mysql_data/master:/var/lib/mysql'
- './mysql_conf/master/my.cnf:/etc/mysql/conf.d/master.cnf'
environment:
MYSQL_ROOT_PASSWORD : '123456'
slave_mysql:
container_name: slave_mysql
image: mysql:5.7
ports:
- '3307:3306'
volumes:
- './mysql_data/slave:/var/lib/mysql'
- './mysql_conf/slave/my.cnf:/etc/mysql/conf.d/slave.cnf'
environment:
MYSQL_ROOT_PASSWORD: '123456'
./mysql_conf/master/my.cnf
[mysqld] user=mysql log-bin=mysql-master01-bin server-id=1 [client] port = 3306 # 設定mysql客戶端連線服務端時預設使用的埠 [mysql] default-character-set=utf8 # 設定mysql客戶端預設字元 bind-address = 0.0.0.0
./mysql_conf/slave/my.cnf
[mysqld]
user=mysql
log-bin=mysql-slave01-bin
server-id=2
[client]
port = 3306 # 設定mysql客戶端連線服務端時預設使用的埠
[mysql]
default-character-set=utf8 # 設定mysql客戶端預設字元
bind-address = 0.0.0.0
執行:docker-compose up -d
一. 進入master執行:show master status;
記住file的值.
建立使用者:create user zwq;
賦予許可權:GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY '123456'; FLUSH PRIVILEGES;
引數說明:
1.FLUSH PRIVILEGES;這個命令必須填寫,否則上面設定的使用者許可權失效。
2.ip地址是可以設定範圍的。例如:GRANT REPLICATION SLAVE ON *.* TO'linzhiqiang'@'192.168.0.%' IDENTIFIED BY'220316';
3.操作的資料庫也是可以指定的。
4.使用者的許可權也是可以設定的。具體的命令大家可以自己去學習,我這裡就不多說了。
如果不設定使用者許可權的話,本地可以連線的上mysql伺服器,區域網或者外網是連線不上,會顯示連線被拒絕或者使用者沒有這個許可權。除此之外許可權還可以精確到某個資料庫,連線者的IP地址區間,設定是某個資料的操作問題等等都可以進行設定。我這邊設定的是zwq這個使用者具備所有使用者資料庫的許可權,所有的ip地址都可以通過Master這個使用者來連線主資料庫。
二. 進入slave
change master to
master_host='192.168.88.22', //Master 宿主機Ip地址
master_port=3306,//Master 埠號
master_user='zwq',//Master 使用者名稱
master_password='123456',//使用者密碼
master_log_file='mysql-master01-bin.000003',//Master伺服器產生的日誌要和Master伺服器所配置的相互對應如下如所示的file對應(上面記住的file值)
master_log_pos=0;//要和Master伺服器所配置的相互對應如下如所示的Position對應(經過測試發現如果是一樣的只能同步一次,所以這裡修正成0,0是可以每次都同步成功的)
然後執行:start slave
檢視狀態是否正確:show slave status\G
最後進行測試.