docker下配置mysql主从数据库,单主多从,斐讯N1,镜像mysql/mysql-server:8.0.19
首先这是本菜鸟的第一篇文章,仅用作自己的学习路程记录,如果能帮到有需要的人,那也是极好的。本人手上有一个斐讯N1盒子,内部已刷了NDM小钢炮,一直作为下载机器在用,这个固件带了docker,用起来很方便,也很能折腾,已刷了AdGuard作为净化网络,最近开始学习mysql的主从数据库,框架的读写分离,不太想动开发主机的环境。邪恶的眼光瞄准了N1。因为有docker啊,整起来方便。第一步要做...
首先这是本菜鸟的第一篇文章,仅用作自己的学习路程记录,如果能帮到有需要的人,那也是极好的。
手上有一个斐讯N1盒子,内部已刷了NDM小钢炮,一直作为下载机器在用,这个固件带了docker,用起来很方便,也很能折腾,已刷了AdGuard作为净化网络,最近开始学习mysql的主从数据库,框架的读写分离,不太想动开发主机的环境。邪恶的眼光瞄准了N1。因为有docker啊,整起来方便。
n1的NDM 镜像资源如下(灯大的资源):
n1的NDM刷机教程如下:
第一步要做到的便是在N1上搭建出主从数据库,设想是1主3从。
选择docker镜像,先去https://hub.docker.com/查找可用的mysql版本
最后选择的是上图的 mysql/mysql-server:8.0.19,原因无它:arm64+mysql8,综合一下就选择了这个。
在N1的上下载该镜像
docker pull mysql/mysql-server:8.0.19
完成后创建1主3从的容器,模拟实际环境,建议和使用同一个镜像版本来做这类事情,免得奇奇怪怪的事情
docker run -p 3001:3306 --name mysql_1 -e MYSQL_ROOT_PASSWORD=root -d mysql/mysql-server:8.0.19
docker run -p 3002:3306 --name mysql_2 -e MYSQL_ROOT_PASSWORD=root -d mysql/mysql-server:8.0.19
docker run -p 3003:3306 --name mysql_3 -e MYSQL_ROOT_PASSWORD=root -d mysql/mysql-server:8.0.19
docker run -p 3004:3306 --name mysql_4 -e MYSQL_ROOT_PASSWORD=root -d mysql/mysql-server:8.0.19
mysql_1作为主,其余为从。端口3001映射到主数据库端口,3002-3004映射到三个对应的从数据库。通过N1的Portainer可以检查容器的情况,比较方便,如下图
待四个容器启动无问题后,需要进入每个容器中配置账号与权限
[root@gan-n1-office:~]# docker exec -it mysql_1 bash
作为局域网使用的mysql,直接使用root账号来配置
bash-4.2# mysql -u root -p
Enter password:
mysql> use mysql;
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'root';#修改root账号密码,兼容一些老程序的加密方式
mysql> update user set host='%' where user='root';#允许root账号远程登陆
mysql> flush privileges;
参照以上操作将从数据库账号密码也配置好,接下来定义mysql的配置文件
1.主库:我的数据库配置文件在 /var/lib/docker/overlay2/..../merged,其中....请各位参照实际情况,打开my.cnf在最底部添加
[mysqld]
#默认加密方式改为低版本
default_authentication_plugin=mysql_native_password#主库
server-id=1 # id
log-bin=mysql-bin #二进制文件存放路径
binlog-do-db=test #待同步的数据库
2.从库的my.cnf最底部添加
[mysqld]
#默认加密方式改为低版本
default_authentication_plugin=mysql_native_password
#从库
log-bin=mysql-bin
server-id=2 #各从库的id需不同,例如我这里就用的 【2,3,4】
replicate_do_db=test #待同步的数据库
重启四个数据库后,进入主库
mysql>show master status;
记录下其中的 File与 Position ,我的是:mysql-bin.000003与11287。接下来分别进入从库
mysql>change master to master_host='192.168.0.165',master_user='root',master_password='root',master_port=3001,master_log_file='mysql-bin.000003',master_log_pos=11287;
mysql>start slave;
mysql>show slave status;
运行结果查看到 Slave_IO_running与Slave_SQL_Running为YES就可以了,这样下来一主三从的数据库就搭建好了,在主库CUD,查看从库能看到相同的结果。转载请著名出处by:CSDN@azhonghao
更多推荐
所有评论(0)