1:準備兩個虛擬機
1)192.168.0.212 mysqlA
2)192.168.0.166 mysqlB
2:啓動docker中的mysql
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.5 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
3:進入容器內修改配置 docker exec -it 6dbfb2fb3cda /bin/bash
1)6dbfb2fb3cda 爲mysql的容器id,可在docker ps中查看啓動的mysql
2)找到 進入路徑 cd etc/mysql 修改cd my.cnf文件 我用vim打開
如果沒有可以下載 執行 apt-get update==>apt-get install vim
注意:my.cnf中的 binlog-do-db=db_dbs_config #是要同步的數據庫 mysqlA和mysqlB一定要相同
192.168.0.212 mysqlA 的配置文件vim my.cnf修改爲
[mysqld]
skip-name-resolve
server-id=1 #必須與其他服務器不同,且必須爲1到232–1之間的一個正整數值
#i am master
log-bin=mysql-bin #二進制文件
binlog-do-db=db_dbs_config #要同步的數據庫
binlog-ignore-db=information_schema#不同步的數據庫
binlog-ignore-db=db_Im
binlog-ignore-db=db_Mdr
binlog-ignore-db=db_mrs
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=test
slave-skip-errors=1032,1062
192.168.0.166 mysqlB 的配置文件vim my.cnf修改爲
[mysqld]
skip-name-resolve
server-id=2
#i am master
log-bin=mysql-bin
binlog-do-db = db_dbs_config
binlog-ignore-db=information_schema
binlog-ignore-db=db_Im
binlog-ignore-db=db_Mdr
binlog-ignore-db=db_mrs
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=test
slave-skip-errors=1032,106
3)重啓mysql
4:允許root遠程訪問
1)進入mysql容器內(第三條第一點有如何進入容器),連接mysql
命令:mysql - uroot -proot
2)選擇mysql數據庫
命令:use mysql
3)修改遠程登錄權限
mysql> SELECT User, Password, Host FROM user; -- 查看現有用戶,密碼及允許連接的主機
+------+----------+-----------+
| User | Password | Host |
+------+----------+-----------+
| root | | localhost |
+------+----------+-----------+
執行命令給 root用戶賦權限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '' WITH GRANT OPTION; 指定 192.168.1.100可以訪問,如果想不限制IP 把IP改爲%
5:創建數據庫和該數據庫的用戶,創建一個測試表test,兩個數據庫要相同
6:設置主主
1)在mysqlA 查看A的master 命令 show master status;
記錄 file:mysql-bin.000008 文件
Position:107 文件讀取點 可以根據該點回復
2)在mysqlB 查看B的master 命令 show master status;
記錄 file:mysql-bin.000005 文件
Position:256 文件讀取點 可以根據該點回復
3)給A指定B的master
mysql> change master to
-> master_host='192.168.0.166',
-> master_user='gaihe',
-> master_password='gaihe',
-> master_log_file='mysql-bin.000005',
-> master_log_pos=256;
4)給B指定A的master
mysql> change master to
-> master_host='192.168.0.212',
-> master_user='gaihe',
-> master_password='gaihe',
-> master_log_file='mysql-bin.000008 ',
-> master_log_pos=107;
mysql數據庫命令
grant all on *.* to 'gaihe'@'%';//分配數據庫權限
revoke all on *.* from 'xiaogang' @'%';//收回數據庫權限