首先这是本菜鸟的第一篇文章,仅用作自己的学习路程记录,如果能帮到有需要的人,那也是极好的。

手上有一个斐讯N1盒子,内部已刷了NDM小钢炮,一直作为下载机器在用,这个固件带了docker,用起来很方便,也很能折腾,已刷了AdGuard作为净化网络,最近开始学习mysql的主从数据库,框架的读写分离,不太想动开发主机的环境。邪恶的眼光瞄准了N1。因为有docker啊,整起来方便。

n1的NDM 镜像资源如下(灯大的资源):

小钢炮镜像下载地址

n1的NDM刷机教程如下:

NDM刷机教程

第一步要做到的便是在N1上搭建出主从数据库,设想是1主3从。

选择docker镜像,先去https://hub.docker.com/查找可用的mysql版本

docker镜像/转载请著名出处by:CSDN@azhonghao

最后选择的是上图的 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可以检查容器的情况,比较方便,如下图

容器列表/转载请著名出处by:CSDN@azhonghao

待四个容器启动无问题后,需要进入每个容器中配置账号与权限

[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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐