背景描述

通常开始只有一个MySQL实例在运行,后期因为安全性,压力,备份等原因需要在此实例的基础上面新增一个从库。

分析:MySQL主从是基于binlog日志来实现的,那么需要主服务器开启binlog,此选项默认是关闭。我这边服务器在部署的时候就开启了,因为使用binlog可以用来恢复MySQL数据,并且还为以后做主从做好准备,所以我们推荐大家在部署主服务器的时候就开启此选项。另外在做主从的时候还需要主库和从库的server-id唯一,server-id在做主从的时候也是相当关键的一个参数。

另外因为我们MySQL主库已经运行一段时间了,里面已经有相当多数据,我们需要将这些数据备份出来,然后从库再从备份的节点同步数据,这样来保持主从的数据一致性。并且在操作过程中最好不要影响我们的业务正常运行。最终决定使用xtrabackup来备份数据,因为用xtrabackup备份数据的时候不需要琐表,但只限于InnoDB引擎的数据库和XtraDB引擎的数据库,对于MyISAM引擎的数据库还是会琐表,刚好我们的数据库引擎使用的是InnoDB。

操作步骤

1. 部署从数据库服务器,最好数据库版本一致,部署过程省略。

2. 修改主库my.cnf配置文件。

以下为主服务器需要修改的配置,server_id不一定为82,可以为任何一个数字,比如我们可以用本机的IP最后一位。

[mysqld]

datadir=/data/mysql

log_bin=mysql-bin

server_id=10

expire_logs_days=5

binlog-ignore-db=mysql,information_schema,performance_schema,sys

binlog-do-db=discuz,phpcms

datadir:此选项一定要指定,就算有默认也需要指定。

expire_logs_days:指定binlog文件保留的天数,如果硬盘空间够大可以不指定,或者指定天数多一点。

binlog-ignore-db:指定忽略不同步的数据库,可选。

binlog-do-db:指定要同步的数据库,可选。

3. 在主服务器上面授权从服务器一个主从同步账号。

mysql> grant replication slave on *.* to 'slave'@'%' identified by '123qweASD';

说明:以上授权命令根据自己需求更改,比如权限,可访问数据库,用户名,授权客户端,密码等信息。

2. 修改从库my.cnf配置文件。

datadir=/data/mysql

server_id = 2

slave_parallel_workers = 16

slave_parallel_type = logical_clock

datadir:此选项一定要指定,就算有默认也需要指定。

replicate-do-db:指定需要同步的数据库,可选。

replicate-ignore-db: 指定不同步的数据库,可选。

plicate-do-table:指定需要同步的表,可选。

replicate-ignore-table: 指定不同步的表,可选。

replicate-wild-do-table:指定需要同步的表,可以使用通配符,如test.tables1%,可选。

replicate-wild-ignore-table:指定不需要同步的表,可以使用通配符,可选。

slave_parallel_workers:多少个线程用于主从复制。

slave_parallel_type:启用并行复制。

3. 安装xtrabackup工具,主从服务器都需要安装。

至以下连接下载适合自己操作系统版本和MySQL版本的xtrabackup。

4. 下载完成后执行以下命令安装 。

~]# yum -y install percona-xtrabackup-24-2.4.10-1.el7.x86_64.rpm

5. 备份数据。

注意:以需要使用root用户执行,或者使用sudo权限执行。

备份整个库。

~]# xtrabackup --user=root --password=123456 --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--user:指定数据库访问用户名。

--password:指定数据库访问密码,如果密码有特殊字符需要使用单引号引起来。

--target-dir:指定备份路径,最好写绝对路径。

--backup:与--target-dir选项一起使用。

-S:指定mysql.sock文件位置。

备份单个库。

~]# xtrabackup --user=root --password=123456 --databases=test1 --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases:指定需要备份的库名。

备份多个库。

~]# xtrabackup --user=root --password=123456 --databases="test1 test2 test3" --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases:多库用双引号引起来,使用空格进行分隔。

备份某个库的指定表。

~]# xtrabackup --user=root --password=123456 --databases="test1.tables1 test2.tables2 test3.tables3" --target-dir=/root/mysql_bak -S /tmp/mysql.sock --backup

--databases:备份表使用.

6. 将备份数据复制到从服务器

~]# scp -pr /root/mysql_bak/* root@172.16.10.11:/data/mysql_slave

7. 将数据还原到从服务器

注意:还原之前需要停止从库数据库服务并清空从服务器数据目录,如果有需要的数据就先备份到其实地方

停止服务。

~]# service mysqld restart || systemctl restart mysqld

备份从库原数据,如果是全库主从就不需要备份。

~]# mkdir /data/mysql_bak

~]# mv /data/mysql/* /data/mysql_bak

执行还原操作.

~]# xtrabackup --prepare --target-dir=/data/mysql_slave

~]# xtrabackup --copy-back --target-dir=/data/mysql_slave

8. 启动从数据库并启用主从。

~]# cp -r /data/mysql_bak/* /data/mysql

~]# chown -R mysql:mysql /data/mysql

~]# service mysqld restart || systemctl restart mysqld

将原备份数据复制回原目录,注意:ib_buffer_pool ibdata1 ib_logfile0 ib_logfile1四个文件不要覆盖。如果从库没有数据需要往回复制的话就不需要cp这步操作。

指定主库信息主从。

mysql> change master to master_host='172.16.10.10',master_port=3306,master_user='slave',master_password='123qweASD',master_log_file='mysql-bin.000011',master_log_pos=154;

master_host:master服务器的IP地址。

master_port:master服务器的端口。

master_user:master服务器授权从服务器主从同步的用户名。

master_password:master服务器授权从服务器主从同步的密码,

master_log_file:从主服务器备份出来的文件:xtrabackup_info中获取。

~]# grep "binlog_pos" xtrabackup_info | awk -F "'" '{print $2}'

master_log_pos:从主服务器备份出来的文件:xtrabackup_info中获取。

~]# grep "binlog_pos" xtrabackup_info | awk -F "'" '{print $4}'

9. 执行以下命令启用主从同步。

mysql> start slave;

小知识:停止主从同步命令为。

mysql> stop slave;

10. 测试并检查主从状态。

mysql> show slave status \G;

如果看以以下两个值为Yes说明主从同步正常。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

11. 测试

可以修改下需要同步的库,或者表的数据看上是否能正常同步去,或者在备份完的时候就去修改下数据,这时候备份里同是没有此修改记录,当启用主从同步的时候看下数据是否会同步过来。

mysql从库新增_MySQL新增从库相关推荐

  1. mysql库迁移_MySql数据库 指定库迁移

    1 环境准备 1.两台数据库服务器,并安装好mysql服务,两台机器之间内网互相通信,最好可以进行免密传输 也可以一台服务器搭建多实例环境 10.0.0.101 10.0.0.102 2 迁移流程 2 ...

  2. mysql 多表备份_mysql备份与恢复多库多表备份

    实例:备份:mysqldump -u root -p'123456' kaliboy>/opt/kaliboy.sql 指定字符集备份:mysqldump -u root -p'123456'  ...

  3. mysql主从数据库设计_mysql数据库主从库镜像原理及配置

    最近有个项目需要在vmware虚拟机上安装mysql,由于生产环境的要求需要有必要,如果做成VM虚机操作系统层HA,需要用到虚拟共享总线,而这将会使VM丧失vmtion特性.于是选择不做OS层的高可用 ...

  4. mysql 版本太高_mysql创建新库以及解决版本过高8.0以上导致navicat无法连接的问题...

    昨天运营大佬给了一个云上的服务器 mysql已经装上去了 用来给我做测试使用 软件环境是:  CentOS 7.4 +  Mysql 8.0.20 于是我准备创建几个数据库 分别创建不用的用户登录访问 ...

  5. json mysql 字段 默认值_MySQL新增JSON类型字段的使用总结

    最近刚好用到了MySQL的JSON函数做了一些数据处理相关的工作,顺便记录总结一下相关知识点和用法. MySQL从5.7.8开始支持原生JSON数据类型,以JSON类型存储json格式的数据,比字符串 ...

  6. mysql 建库 语法_mysql语法建库建表综合整理是示例

    首先介绍一个数据库常用编码格式区别: utf8与utf8mb4(utf8 most bytes 4) MySQL 5.5.3之后增加了utfmb4字符编码 utf8mb4是utf8的超集并完全兼容ut ...

  7. mysql增加表字段_MySql新增表的字段,删除表字段

    1增加两个字段: create table id_name(id int,name varchar(20));//创建原始数据表 alter table id_name add age int,add ...

  8. NumSharp v0.6 科学计算库发布,新增 LAPACK 的线性库支持

    NumSharp(Numerical .NET)可以说是C#中的科学计算库. 它是用C#编写的,符合.netstandard 2.0库标准. 它的目标是让.NET开发人员使用NumPy的语法编写机器学 ...

  9. 旺店通·企业奇门与金蝶云星空对接集成查询销售出库单连通销售出库新增(分销销售出库)

    旺店通·企业奇门与金蝶云星空对接集成查询销售出库单连通销售出库新增(分销销售出库) 对接系统旺店通·企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服 ...

  10. 旺店通·企业奇门与金蝶云星空对接集成查询销售出库单连通[旺店通][销售出库单标准新增]-v1(旺店通->金蝶销售出库单--零售销售(手工运维))

    对接源平台:旺店通·企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零售企业数字化智能化管理升级.为零售电商企业的订单 ...

最新文章

  1. SVN可以拉项目但是提交时提示没有权限
  2. Linux Core Dump
  3. 魔兽世界高法伤技能列表
  4. STM32 HAL库--串口的DMA(发送、接收)和esp8266 wifi模组发送和接收封装函数
  5. linux下logrotate配置和理解---转
  6. 通过这些简单的步骤从头开始学习Java
  7. python 编程快速上手,Python编程快速上手
  8. mixin机制 vue_vue mixins组件复用的几种方式(小结)
  9. 【Linux/Ubuntu】查询文件和文件夹大小
  10. GAN 优化 Yelp 形象图片广告
  11. python 3.6 MJ小工具
  12. 在linux中的文件中查找_如何在Linux中查找文件
  13. Python处理Excel文件
  14. Visual C++编译选项
  15. 遍历文件夹进行点云格式转换 PCD转BIN BIN转PCD PCD转TXT TXT转PCD PLY转PCD
  16. python3 题解(33 人民币金额大写)
  17. 1467B. Hills And Valleys(思维模拟)
  18. android sdk所有版本下载,android sdk全平台版本集成
  19. Fiddler安装与配置
  20. Vue $attrs使用方式及使用场景

热门文章

  1. 股价/期货等时间序列数据的整合检验、Grach建模
  2. 使用国内源来安装pytorch(速度很快)
  3. pcl对点云进行直通滤波
  4. 求数组的子数组之和的最大值III(循环数组)
  5. 【Python3爬虫】网易云音乐歌单下载
  6. python map对象
  7. eclipse提交代码到github其他分支
  8. Quartz的使用案例
  9. 连载8:时域信号相乘相当于频域卷积
  10. Python爬上不得姐 并将段子写入数据库