1. 程式人生 > >docker安裝mysql主從同步

docker安裝mysql主從同步

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 最後進行測試.