linux环境下主从复制,Linux之CentOS上配置MariaDB主从复制
摘要
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主从复制相关推荐
- 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 ...
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
1.什么是 Rsync? Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步 ...
- LINUX环境下VNC服务端与客户端配置
公司开发原来都是用的Xmanager软件,但近期爆出该软件存在后门漏洞问题,安防部门要求停止使用老版本的Xmanager进行升级或改用开源VNC软件,因此在网上查看了一些配置说明,特整理如下: VNC ...
- linux环境下作业调度,Linux集群环境下作业调度算法的研究与实现
摘要: 集群计算环境中的作业调度接收用户提交的作业请求,并采用适当的调度策略选择计算节点资源来运行用户作业.作业调度策略决定了整个集群系统的效率,尤其是提交计算量大的作业时,良好的作业调度可以大大加快 ...
- adk linux 64 下载,Linux环境下的Android的ADK安装配置
下载android sdk 将android sdk下载至/opt/download目录下.cd /opt mkdir download cd download wget http://dl.goog ...
- linux环境下查看进程,Linux下查看进程(程序)启动时的环境变量
背景: 因最近试安装Linux下的jira,有一个中文插件安装后,一旦设置开机启动后,它是英文,而在终端再重新启动一次后呢,似乎插件生效,它又恢复为正常中文界面,我首先想这这涉及到一个环境变量的问题, ...
- Linux环境下安装及部署Nginx教程
一.安装教程 1.官网下载地址:nginx: download 2.下载教程: 1)选择Stable version版本下载到本地(该版本为Linux版本),下载完成后直接在本地解压后放入linux系 ...
- 【OS】Linux环境下配置固定IP地址--静态IP地址(不能上外网问题)
[OS]Linux环境下配置固定IP地址--静态IP地址(不能上外网问题) ---red hat重启网卡 service network restart /etc/rc.d/init.d/networ ...
- ffmpeg编译gb28181_RTSP/GB28181协议/海康SDK/Ehome协议视频上云网关EasyCVR视频平台在linux环境下ffmpeg源码单步调试环境搭建...
目前TSINGSEE青犀视频研发的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍.Eho ...
最新文章
- python读取xml_python解析xml文件
- 快速创建springBoot
- ITK:二维高斯混合模型期望最大化
- Linux VNC黑屏(转)
- 设计模式适配器模式_适配器设计模式示例
- DEL: Open explorer from Console
- Python 数据科学手册 5.6 线性回归
- windows和linux文件输 - ftp
- [转载]for循环的执行顺序
- sudo su 和sudo -s的区别
- uds协议之can总线程序升级
- Java项目:ssm党员管理系统
- 高德地图SDK 配置key
- BAT的医疗春秋大梦
- Yolov5系列(一)——网络可视化工具netron
- 解决typora 或markdown文档图片失效问题
- c语言表示时间的程序,C语言显示“当前时间”小程序
- stm32 串口下载(ISP下载)
- scrapy爬取网站在线播放TS视频流片段并整合为MP4格式
- 打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站