您好,登錄后才能下訂單哦!
這篇文章主要介紹MacOS如何使用Docker創建MySQL主從數據庫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
一、拉取MySQL鏡像
通過終端獲取最新的MySQL鏡像
docker pull mysql/mysql-server
二、創建MySQL數據庫容器配置文件對應目錄
我們在當前用戶下創建一組目錄,用來存放MySQL容器配置文件,(Linux下可以省略此步驟)參考下圖:
注意:MySQL8版本以后,需要在映射文件中加入 mysql-files,否則MySQL數據庫容器會創建失敗。
因為在MacOS下不支持vi/vim 直接修改my.cnf文件,也不支持apt-get安裝vim,所以需要在本地新建兩個my.cnf映射文件。(Linux下可以通過vim直接修改配置文件)
master主庫對應的my.cnf配置文件為:
[mysqld] server_id = 1 log-bin= mysql-bin read-only=0 replicate-ignore-db=mysql replicate-ignore-db=sys replicate-ignore-db=information_schema replicate-ignore-db=performance_schema
slave從庫對應的my.cnf配置文件為:
[mysqld] server_id = 2 log-bin= mysql-bin read-only=1 replicate-ignore-db=mysql replicate-ignore-db=sys replicate-ignore-db=information_schema replicate-ignore-db=performance_schema
三、創建兩個MySQL數據庫容器
創建master主數據庫容器
docker run --name mysql-master -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/yumaster/test/mysql_master_slave/master/data:/var/lib/mysql -v /Users/yumaster/test/mysql_master_slave/master/conf/my.cnf:/etc/mysql/my.cnf -v /Users/yumaster/test/mysql_master_slave/master/mysql-files:/var/lib/mysql-files mysql/mysql-server
創建slave從數據庫容器
docker run --name mysql-slave -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /Users/yumaster/test/mysql_master_slave/slave/data:/var/lib/mysql -v /Users/yumaster/test/mysql_master_slave/slave/conf/my.cnf:/etc/mysql/my.cnf -v /Users/yumaster/test/mysql_master_slave/slave/mysql-files:/var/lib/mysql-files mysql/mysql-server
如下圖,說明兩個MySQL容器創建成功
此時我們打開Docker儀表板可以看到,兩個容器已經運行起來了。而且端口就是我們之前創建的對應端口
我們通過Navicat連接會報哦1130錯誤,是因為所連接的用戶賬戶沒有遠程連接的權限。需要更改mysql數據庫里的user表里的host項
把localhost改成%
具體步驟:
mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select host from user where user='root'; +-----------+ | host | +-----------+ | localhost | +-----------+ 1 row in set (0.01 sec) mysql> update user set host='%' where user = 'root'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select host from user where user='root'; +------+ | host | +------+ | % | +------+ 1 row in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
四、主從數據庫配置
master主數據庫配置:
//進入master主數據容器 docker exec -it mysql-master mysql -uroot -p123456 //創建一個用戶來同步數據,每個slave使用標準的MySQL用戶名和密碼連接master。進行復制操作的用戶會授予REPLICATION SLAVE 權限。mysql8 之前的版本中加密規則是mysql_native_password,而在mysql8之后,加密規則是caching_sha2_password CREATE USER 'slave'@'%' IDENTIFIED BY '123456';(這樣有可能在slave創建與master連接時報錯) 或 CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; //對用戶進行授權 GRANT REPLICATION SLAVE ON *.* to 'slave'@'%'; //查看狀態,記住File、Position的值,在Slave中將用到 show master status; //查詢master容器的IP,會在slave設置主庫連接時用到 docker inspect mysql-master | grep IPA;
mster的狀態,File mysql-bin.000003 Position 661
slave從數據庫配置:
//進入slave從數據容器 docker exec -it mysql-slave mysql -uroot -p123456 //設置主庫鏈接 change master to change master to master_host='172.17.0.2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=661,master_port=3306; //啟動從庫同步 start slave; //查看狀態 show slave status\G; //如果 show slave status\G命令結果中出現: //Slave_IO_Running: Yes //Slave_SQL_Running: Yes //以上兩項都為Yes,那說明沒問題了。 //否則,從新配置從數據 stop slave; reset slave all;
啟動從庫同步成功
五、主從驗證
我們在master上創建一個數據庫,然后創建一張表,再插入一條數據,相應的slave也會增加;
create database master_slave_demo; use master_slave_demo; create table userinfo(username varchar(50),age int); insert into userinfo values('Toulon',25); select * from userinfo;
在執行命令之前,主從數據庫數量相同;
master執行命令之后slave增加對應數據
可以發現主庫新增的數據已經同步過來了,MySQL的主從復制就設置完成了。(測試環境,MacOS M1 ARM64機器,Docker,MySQL 8.0.27)
以上是“MacOS如何使用Docker創建MySQL主從數據庫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。