docker容器單機(jī)創(chuàng)建3個(gè)節(jié)點(diǎn)的MySQLMGR集群方式
更新時(shí)間:2026年01月06日 15:34:46 作者:MrZhou周
本文檔詳細(xì)介紹了如何在單機(jī)上使用Docker創(chuàng)建一個(gè)包含三個(gè)節(jié)點(diǎn)的MySQL MGR集群,通過一系列步驟,包括安裝Docker、配置MySQL MGR以及啟動(dòng)多個(gè)容器,成功構(gòu)建了一個(gè)高可用的MySQL集群環(huán)境
docker容器單機(jī)創(chuàng)建3個(gè)節(jié)點(diǎn)的MySQLMGR集群
mkdir -p /data/dockerData/mysql1/conf.d mkdir -p /data/dockerData/mysql1/data mkdir -p /data/dockerData/mysql2/conf.d mkdir -p /data/dockerData/mysql2/data mkdir -p /data/dockerData/mysql3/conf.d mkdir -p /data/dockerData/mysql3/data
docker run -d \ --name mysql33011 \ -p 33011:3306 \ --net=mysql-network --ip 172.72.0.15 \ -v /data/dockerData/mysql1/conf.d:/etc/mysql/conf.d \ -v /data/dockerData/mysql1/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ mysql:8.0.43 docker run -d \ --name mysql33012 \ -p 33012:3306 \ --net=mysql-network --ip 172.72.0.16 \ -v /data/dockerData/mysql2/conf.d:/etc/mysql/conf.d \ -v /data/dockerData/mysql2/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ mysql:8.0.43 docker run -d \ --name mysql33013 \ -p 33013:3306 \ --net=mysql-network --ip 172.72.0.17 \ -v /data/dockerData/mysql3/conf.d:/etc/mysql/conf.d \ -v /data/dockerData/mysql3/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=root \ mysql:8.0.43
cat > /data/dockerData/mysql1/conf.d/my.cnf <<"EOF" [mysqld] user=mysql port=3306 character_set_server=utf8mb4 secure_file_priv='' server-id = 33011 default-time-zone = '+8:00' log_timestamps = SYSTEM log-bin = 1 binlog_format=row binlog_checksum=NONE log-slave-updates=1 skip-name-resolve auto-increment-increment=2 auto-increment-offset=1 gtid-mode=ON enforce-gtid-consistency=on default_authentication_plugin=mysql_native_password max_allowed_packet = 500M master_info_repository=TABLE relay_log_info_repository=TABLE relay_log=mgr15-relay-bin-ip15 transaction_write_set_extraction=XXHASH64 loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" loose-group_replication_start_on_boot=OFF loose-group_replication_local_address= "172.72.0.15:33061" loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063" loose-group_replication_bootstrap_group=OFF loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17" report_host=172.72.0.15 report_port=3306 EOF cat > /data/dockerData/mysql2/conf.d/my.cnf <<"EOF" [mysqld] user=mysql port=3306 character_set_server=utf8mb4 secure_file_priv='' server-id = 33012 default-time-zone = '+8:00' log_timestamps = SYSTEM log-bin = 1 binlog_format=row binlog_checksum=NONE log-slave-updates=1 gtid-mode=ON enforce-gtid-consistency=ON skip_name_resolve default_authentication_plugin=mysql_native_password max_allowed_packet = 500M master_info_repository=TABLE relay_log_info_repository=TABLE relay_log=mgr16-relay-bin-ip16 transaction_write_set_extraction=XXHASH64 loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" loose-group_replication_start_on_boot=OFF loose-group_replication_local_address= "172.72.0.16:33062" loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063" loose-group_replication_bootstrap_group=OFF loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17" report_host=172.72.0.16 report_port=3306 EOF cat > /data/dockerData/mysql3/conf.d/my.cnf <<"EOF" [mysqld] user=mysql port=3306 character_set_server=utf8mb4 secure_file_priv='' server-id = 33013 default-time-zone = '+8:00' log_timestamps = SYSTEM log-bin = 1 binlog_format=row binlog_checksum=NONE log-slave-updates=1 gtid-mode=ON enforce-gtid-consistency=ON skip_name_resolve default_authentication_plugin=mysql_native_password max_allowed_packet = 500M master_info_repository=TABLE relay_log_info_repository=TABLE relay_log=mgr17-relay-bin-ip17 transaction_write_set_extraction=XXHASH64 loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" loose-group_replication_start_on_boot=OFF loose-group_replication_local_address= "172.72.0.17:33063" loose-group_replication_group_seeds= "172.72.0.15:33061,172.72.0.16:33062,172.72.0.17:33063" loose-group_replication_bootstrap_group=OFF loose-group_replication_ip_whitelist="172.72.0.15,172.72.0.16,172.72.0.17" report_host=172.72.0.17 report_port=3306 EOF
docker restart mysql33011 mysql33012 mysql33013
所有MySQL容器中安裝MGR插件
//xxx是容器的名稱 docker exec -it mysql33011 mysql -uroot -proot INSTALL PLUGIN group_replication SONAME 'group_replication.so'; show plugins; docker exec -it mysql33012 mysql -uroot -proot INSTALL PLUGIN group_replication SONAME 'group_replication.so'; show plugins; docker exec -it mysql33013 mysql -uroot -proot INSTALL PLUGIN group_replication SONAME 'group_replication.so'; show plugins;
在所有節(jié)點(diǎn)上創(chuàng)建復(fù)制賬號(hào)
docker exec -it mysql33011 mysql -uroot -proot docker exec -it mysql33012 mysql -uroot -proot docker exec -it mysql33013 mysql -uroot -proot SET SQL_LOG_BIN=0; CREATE USER repl@'%' IDENTIFIED BY 'root'; GRANT REPLICATION SLAVE ON *.* TO repl@'%'; FLUSH PRIVILEGES; SET SQL_LOG_BIN=1; CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='root' FOR CHANNEL 'group_replication_recovery'; exit;
啟動(dòng)MGR單主模式
在主節(jié)點(diǎn)上啟動(dòng)MGR:
docker exec -it mysql33011 mysql -uroot -proot SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF; SELECT * FROM performance_schema.replication_group_members;
剩余節(jié)點(diǎn)需要加入MGR,在剩余節(jié)點(diǎn)上執(zhí)行以下操作:
docker exec -it mysql33012 mysql -uroot -proot docker exec -it mysql33013 mysql -uroot -proot START GROUP_REPLICATION; SELECT * FROM performance_schema.replication_group_members; exit;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot打包成Docker鏡像的項(xiàng)目實(shí)踐
Spring Boot和Docker,可以方便地將應(yīng)用程序部署到不同的環(huán)境中,本文主要介紹了SpringBoot打包成Docker鏡像的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
Docker?compose一鍵安裝mirai搭建QQ機(jī)器人最快操作方法
這篇文章主要介紹了Docker?compose一鍵安裝mirai,搭建QQ機(jī)器人最快方法,詳細(xì)介紹了mirai基本操作,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
數(shù)據(jù)卷(Data Volumes)及dockefile詳解
在生產(chǎn)環(huán)境中使用Docker,往往需要對(duì)數(shù)據(jù)進(jìn)行持久化,或者需要在多個(gè)容器之間進(jìn)行數(shù)據(jù)共享,這必然涉及容器的數(shù)據(jù)管理操作,今天給大家介紹下數(shù)據(jù)卷(Data Volumes)及dockefile的相關(guān)知識(shí),感興趣的朋友一起看看吧2023-01-01
docker在win10家庭版下構(gòu)建laravel開發(fā)環(huán)境的教程詳解
這篇文章主要介紹了docker在win10家庭版下構(gòu)建laravel開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06

