> 文章列表 > Mariadb 主从部署(虚拟机和docker两种方式)

Mariadb 主从部署(虚拟机和docker两种方式)

Mariadb 主从部署(虚拟机和docker两种方式)

背景

由于之前测试环境部署的mariadb是单机的,公司其他项目的服务器中毒了,导致有一个项目的数据丢失了,加上项目组的确有需要,所以就还是要搭建主从这个方式。

环境信息

服务器:192.168.1.101 (主库),192.168.1.102 (从库)

数据库版本:10.11.2

服务器系统:CentOS Linux release 7.7

本文是在服务器已经安装好了数据库的前提下进行的

一、虚拟机方式

主库配置

1,设置主库数据库配置,修改/etc/my.cnf文件

log_bin = mysql-bin                       #记录操作日志binlog_ignore_db=mysql                  #不同步MySQL系统数据库server_id=101                       #数据库集群中的每个节点id都要不同

2,登录主库数据库,创建账号并赋予replication的权限

grant replication slave on *.* to 'user'@'172.16.60.133' identified by '123456';

3,

查询当前主库log文件及当前位置(主)

MariaDB [(none)]> show master status;+-------------------+----------+--------------+------------------+| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |+-------------------+----------+--------------+------------------+| mysql-bin.000002 |   5327893|              |                  |+-------------------+----------+--------------+------------------+1 row in set (0.00 sec)

#记住file和position的部分,从服务器会用到

从库配置

1,修改从库数据库置,同样修改/etc/my.cnf

server-id=102log-bin=mysql-bin

2,登录从库数据库,设置主从复制

change master to master_host='192.168.1.101',master_user='root',master_password=123456,master_log_file=mysql-bin.000002',master_log_pos=5327893;

数据迁移

先将主库的数据备份和导入到从库,再开始同步

1,在主节点服务器上操作,备份主库的数据库,导出所有数据库的

mysqldump -uroot -p’123456’ --all-databases >  db.sql

2,在从节点服务器操作,导入到从库

mysql -uroot -p’123456’ < db.sql

开启主从复制

登录从节点数据库,执行开始主从复制命令

MariaDB [(none)]> start slave;Query OK, 0 rows affected (0.00 sec)

并查看从节点状态

MariaDB [(none)]> show slave status\\G-*

测试一下表的增删改查,此时就可以看到同步成功

问题汇总

问题1,修改表字段后,没有更新到,一些表字段和存储过程报错

排查后,发现是设置主从复制时没有加上master_log_pos后面加上了就可以了

Docker 方式部署主从

1,首先,在宿主机上创建用于存储配置文件和数据的文件夹。例如,我们可以创建/home/mariad/data   文件夹。

2,创建my.cnf文件,并将其保存在/home/mariad/config文件夹中。以下是示例文件内容:

[mysqld]log-bin=mysql-binserver-id=1

部署主节点

docker run -d --name master \\-e MYSQL_ROOT_PASSWORD=<your_password> \\-v //home/mariad/config:/etc/mysql/conf.d \\-v /home/mariad/data:/var/lib/mysql \\Mariadb

部署从节点

docker run -d --name slave \\-e MYSQL_ROOT_PASSWORD=<your_password> \\-v /home/mariad/config:/etc/mysql/conf.d \\-v /home/mariad/data:/var/lib/mysql \\Mariadb

在主节点创建一个用于复制的用户

GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%' IDENTIFIED BY '<password>';FLUSH PRIVILEGES;

在从节点上,设置从节点连接到主节点的信息。在Mariadb shell中执行以下命令

CHANGE MASTER TO MASTER_HOST='<master_ip>',MASTER_USER='replication_user',MASTER_PASSWORD='<password>',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=0;

在从节点启动

START SLAVE;