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=102

log-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-bin

server-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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Ansible创建MariaDB主从配置,可以按照以下步骤进行操作: 1. 在Ansible控制节点上,创建一个名为`mariadb.yml`的Playbook文件,并添加以下内容: ``` - name: Configure MariaDB master hosts: master roles: - mariadb - name: Configure MariaDB slave hosts: slave roles: - mariadb ``` 2. 在Ansible控制节点上,创建一个名为`roles/mariadb/tasks/main.yml`的任务文件,并添加以下内容: ``` - name: Install MariaDB server yum: name: mariadb-server state: present - name: Start and enable MariaDB service service: name: mariadb state: started enabled: yes - name: Configure MariaDB master template: src: master.cnf.j2 dest: /etc/my.cnf.d/master.cnf notify: restart mariadb - name: Configure MariaDB slave template: src: slave.cnf.j2 dest: /etc/my.cnf.d/slave.cnf notify: restart mariadb - name: Start MariaDB replication on the slave shell: | mysql -e "CHANGE MASTER TO MASTER_HOST='{{ master_host }}', MASTER_USER='{{ replication_user }}', MASTER_PASSWORD='{{ replication_password }}'; START SLAVE;" when: "'slave' in inventory_hostname" ``` 3. 在Ansible控制节点上,创建一个名为`roles/mariadb/templates/master.cnf.j2`的模板文件,并添加以下内容: ``` [mysqld] server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_format = ROW ``` 4. 在Ansible控制节点上,创建一个名为`roles/mariadb/templates/slave.cnf.j2`的模板文件,并添加以下内容: ``` [mysqld] server-id = 2 ``` 5. 在Ansible控制节点上,创建一个名为`inventory.ini`的清单文件,并添加以下内容: ``` [master] master_hostname ansible_host=<master_ip> [slave] slave_hostname ansible_host=<slave_ip> ``` 请将`<master_ip>`和`<slave_ip>`替换为实际的主机IP地址。 6. 在Ansible控制节点上,运行以下命令以执行Playbook并创建MariaDB主从配置: ``` ansible-playbook -i inventory.ini mariadb.yml ``` 现在,您已成功使用Ansible创建了MariaDB主从配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值