摘要

MariaDB主从复制允许在多个服务器上实现数据的异步复制,可有效提升数据库的负载能力,也是实现读写分离方案的基础,是一种常用的HA方案。

环境说明

主库服务器: 192.168.71.151,CentOS 7,MariaDB 10已安装,无应用数据。

从库服务器1: 192.168.71.152,CentOS 7,MariaDB 10已安装,无应用数据。

从库服务器2: 192.168.71.153,CentOS 7,MariaDB 10已安装,无应用数据。

3个服务器的MariaDB都正常运行。

各个服务器的共同配置

以下操作在各个数据库服务器配置文件的[mysqld]部分下执行,数据库配置文件路径假定为 /etc/my.cnf 。/etc/my.cnf 中有关于主从配置的一些说明,见my.cnf中# Replication Master Server (default)和# Replication Slave (comment out master section to use this)部分。

打开各个数据库服务器的配置文件 my.cnf

检查确保各个服务器的skip-networking这行是注释掉的。主从复制需要数据库服务器使用IP监听的方式,不然使用UNIX socket方式监听,其他服务器访问不到。

把bind-address指定为各个服务器网卡的绑定IP上。

即在配置文件的 #skip-networking行后面添加bind-address=192.168.71.x,在192.168.71.151上配置为bind-address=192.168.71.151,在192.168.71.152上配置为bind-address=192.168.71.152,在192.168.71.153上配置为bind-address=192.168.71.153。

配置server_id。server_id值为1到2的32次方-1的整数,每个服务器都需要添加server_id配置,各个服务器的server_id需要保证唯一性互不相同,实践中通常设置为服务器IP地址的最后一位,即分别设置为server_id=151,server_id=152,server_id=153。

上述配置完后调用service mysql reload重新加载配置文件。

配置 主服务器

以下操作在主服务器192.168.71.151的/etc/my.cnf上进行。

确保log-bin是启用的,即log-bin=mysql-bin是非注释状态的,log-bin没指定存储目录,则是默认datadir指向的目录,可登录MariaDB shell通过如下命令查看:

MariaDB [(none)]> show variables like 'datadir';

+---------------+-----------------+

| Variable_name | Value |

+---------------+-----------------+

| datadir | /var/lib/mysql/ |

+---------------+-----------------+

创建帐号并赋予replication的权限

从库 从主库复制数据时需要使用这个帐号进行

MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.71.%' IDENTIFIED BY 'bigs3cret';

Query OK, 0 rows affected (0.00 sec)

查看主库binary log的文件位置

主库锁表操作,不让数据库进行写入操作

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;

Query OK, 0 rows affected (0.00 sec)

记录主库log文件及其当前位置

MariaDB [(none)]> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000002 | 326 | | |

+------------------+----------+--------------+------------------+

记住File和Position的部分,后面会用到

保持当前MariaDB shell终端处于打开状态,即保持主库处于锁定状态,如果关闭MariaDB shell会导致主库恢复非锁定状态

备份主库已有数据并导入从库,如果主库中有数据需要先备份并导入到从库中。使用新的终端窗口或终端模拟器Tab ssh登录192.168.71.151服务器,执行如下语句进行数据库备份操作

mysqldump -uroot -p --all-databases > databases.sql

解锁 主库

数据备份完成后,就可以释放主库上的锁:

MariaDB [(none)]> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)

在 从服务器 上的操作

以下操作需要在从库192.168.71.152和192.168.71.153上都执行。

导入备份的主库数据

mysql -uroot -p < databases.sql

设置relay-log

my.cnf文件中添加一行relay_log=relay-bin,如果不设置,默认是按主机名 + “-relay-bin”生成relay log。

设置主从复制

关于MySQL5.5以后和MariaDB不能在my.cnf文件中配置主库信息的说明

cat `whereis mariadb|awk '{print $2"/support-files/my-large.cnf"}'`

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.71.151',MASTER_PORT=3306,\

MASTER_USER='slave_user',MASTER_PASSWORD='bigs3cret',\

MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS= 326;

Query OK, 0 rows affected (0.24 sec)

这个命令完成以下几个任务:

设置当前服务器为192.168.71.151的从库

提供当前数据库(从库)从主库复制数据时所需的用户名和密码,即上面的

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'192.168.71.%' IDENTIFIED BY 'bigs3cret';设置的指定从库开始复制主库时需要使用的日志文件和文件位置,即上面主库执行SHOW MASTER STATUS;显示结果中的File和Position

开启主从复制

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.00 sec)

查看从库状态

MariaDB [(none)]> SHOW SLAVE STATUS\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.71.151

Master_User: slave_user

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000002

Read_Master_Log_Pos: 326

Relay_Log_File: relay-bin.000001

Relay_Log_Pos: 306

Relay_Master_Log_File: mysql-bin.000002

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 565

Relay_Log_Space: 826

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 151

Master_SSL_Crl:

Master_SSL_Crlpath:

Using_Gtid: No

Gtid_IO_Pos:

1 row in set (0.00 sec)

结果中Slave_IO_Running和Slave_SQL_Running必须为Yes,如果不是,需要根据提示的错误修改。

测试主从复制是否正常

在主库192.168.71.151的MariaDB shell上创建表或修改数据,看是否从库也跟着更新,如果跟着更新则说明正常。

例如,假定主库上有数据库 newdatabase,在主库上执行

MariaDB [(none)]> use newdatabase;

Database changed

MariaDB [newdatabase]> create table test (id int unsigned auto_increment primary key);

Query OK, 0 rows affected (1.07 sec)

在每个从库上执行

MariaDB [(none)]> use newdatabase;

Database changed

MariaDB [newdatabase]> show tables;

+-----------------------+

| Tables_in_newdatabase |

+-----------------------+

| test |

+-----------------------+

1 rows in set (0.00 sec)

linux环境下主从复制,Linux之CentOS上配置MariaDB主从复制相关推荐

  1. linux打包java jar_在linux环境下修改可运行jar包配置并重新打包

    在linux环境下修改可运行jar包配置并重新打包步骤: 1)mkdir xxx 2)mv XXX.jar XXX 3)jar xvf XXX.jar 4)mv XXX.jar ../ 5)vi XX ...

  2. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步

    1.什么是 Rsync? Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步 ...

  3. LINUX环境下VNC服务端与客户端配置

    公司开发原来都是用的Xmanager软件,但近期爆出该软件存在后门漏洞问题,安防部门要求停止使用老版本的Xmanager进行升级或改用开源VNC软件,因此在网上查看了一些配置说明,特整理如下: VNC ...

  4. linux环境下作业调度,Linux集群环境下作业调度算法的研究与实现

    摘要: 集群计算环境中的作业调度接收用户提交的作业请求,并采用适当的调度策略选择计算节点资源来运行用户作业.作业调度策略决定了整个集群系统的效率,尤其是提交计算量大的作业时,良好的作业调度可以大大加快 ...

  5. adk linux 64 下载,Linux环境下的Android的ADK安装配置

    下载android sdk 将android sdk下载至/opt/download目录下.cd /opt mkdir download cd download wget http://dl.goog ...

  6. linux环境下查看进程,Linux下查看进程(程序)启动时的环境变量

    背景: 因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题, ...

  7. Linux环境下安装及部署Nginx教程

    一.安装教程 1.官网下载地址:nginx: download 2.下载教程: 1)选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系 ...

  8. 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)

    [OS]Linux环境下配置固定IP地址--静态IP地址(不能上外网问题) ---red hat重启网卡 service network restart /etc/rc.d/init.d/networ ...

  9. ffmpeg编译gb28181_RTSP/GB28181协议/海康SDK/Ehome协议视频上云网关EasyCVR视频平台在linux环境下ffmpeg源码单步调试环境搭建...

    目前TSINGSEE青犀视频研发的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍.Eho ...

最新文章

  1. python读取xml_python解析xml文件
  2. 快速创建springBoot
  3. ITK:二维高斯混合模型期望最大化
  4. Linux VNC黑屏(转)
  5. 设计模式适配器模式_适配器设计模式示例
  6. DEL: Open explorer from Console
  7. Python 数据科学手册 5.6 线性回归
  8. windows和linux文件输 - ftp
  9. [转载]for循环的执行顺序
  10. sudo su 和sudo -s的区别
  11. uds协议之can总线程序升级
  12. Java项目:ssm党员管理系统
  13. 高德地图SDK 配置key
  14. BAT的医疗春秋大梦
  15. Yolov5系列(一)——网络可视化工具netron
  16. 解决typora 或markdown文档图片失效问题
  17. c语言表示时间的程序,C语言显示“当前时间”小程序
  18. stm32 串口下载(ISP下载)
  19. scrapy爬取网站在线播放TS视频流片段并整合为MP4格式
  20. 打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站

热门文章

  1. 判断存储,是栈?还是队列?
  2. windows 安装 mysql 5.6
  3. LINUX 文件夹打包
  4. HDU1024 Max Sum Plus Plus
  5. LA 3989 - Ladies' Choice 稳定婚姻问题
  6. 《重构HTML改善Web应用的设计》读书笔记
  7. 30秒清除你电脑中的垃圾
  8. 关于如何在ASP.NET 2.0中定制Expression Builders
  9. vue过滤器微信小程序过滤器和百度智能小程序过滤器
  10. 「Python」conda与pip升级所有的包