logo
从零开始在阿里云搭建主从 – 想的个人网站
从零开始在阿里云搭建主从
本文最后更新于44 天前,其中的信息可能已经过时,如有错误请发送邮件到2327470875@qq.com

1.安装Docker
详见https://zero-zl.cn/index.php/2025/08/12/%e5%ae%89%e8%a3%85docker%e5%ae%b9%e5%99%a8/
2.创建专用网络

docker network create mysql-net


3.建配置目录(主+从)

mkdir -p ~/mysql/{master,slave1,slave2}/{conf,data}

4.写配置文件
主库my.cnf

cat > ~/mysql/master/conf/my.cnf <<'EOF'

server-id=1 log-bin=mysql-bin binlog-format=ROW bind-address=0.0.0.0 EOF 从库1my.cnf cat > ~/mysql/slave1/conf/my.cnf <<'EOF'

server-id=2 relay-log=mysql-relay-bin bind-address=0.0.0.0 EOF 从库2 my.cnf cat > ~/mysql/slave2/conf/my.cnf <<'EOF'
[mysqld]
server-id=3
relay-log=mysql-relay-bin
bind-address=0.0.0.0
EOF


5.启动三台容器
主库

docker run -d --name mysql-master --network mysql-net \
-e MYSQL_ROOT_PASSWORD=root123 \
-p 3307:3306 \
-v ~/mysql/master/conf:/etc/mysql/conf.d \
-v ~/mysql/master/data:/var/lib/mysql \
mysql:8.0


从库1

docker run -d --name mysql-slave1 --network mysql-net \
-e MYSQL_ROOT_PASSWORD=root123 \
-p 3310:3306 \
-v ~/mysql/slave1/conf:/etc/mysql/conf.d \
-v ~/mysql/slave1/data:/var/lib/mysql \
mysql:8.0


从库2

docker run -d --name mysql-slave2 --network mysql-net \
-e MYSQL_ROOT_PASSWORD=root123 \
-p 3311:3306 \
-v ~/mysql/slave2/conf:/etc/mysql/conf.d \
-v ~/mysql/slave2/data:/var/lib/mysql \
mysql:8.0


6.主库创建复制账号

docker exec mysql-master mysql -uroot -proot123 -e "
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';
CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl123';
GRANT REPLICATION SLAVE ON . TO 'repl'@'%';
FLUSH PRIVILEGES;"


7.获取binlog坐标

docker exec mysql-master mysql -uroot -proot123 -e "SHOW MASTER STATUS\G"


8.两台从库指向主库
从库1(“MASTER_LOG_POS=“的值换成binlog坐标”Position:“具体的值)

docker exec mysql-slave1 mysql -uroot -proot123 -e "
CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='repl',
MASTER_PASSWORD='repl123',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=157;
START SLAVE;"


库2也是一样

docker exec mysql-slave2 mysql -uroot -proot123 -e "
CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='repl',
MASTER_PASSWORD='repl123',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=157;
START SLAVE;"


9.验证同步

docker exec mysql-slave1 mysql -uroot -proot123 -e "SHOW SLAVE STATUS\G" | grep -E "Slave_IO_Running|Slave_SQL_Running"
docker exec mysql-slave2 mysql -uroot -proot123 -e "SHOW SLAVE STATUS\G" | grep -E "Slave_IO_Running|Slave_SQL_Running"


10.看到从库1和从库2都有两个yes就说明配置成功了

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇