数据库Mysql主从同步

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

rbirmysql主从操作如下,目前只有一台mysql服务器,现添加一台数据库服务器作为从服务器,用来做数据查询,下面是操作步骤(mysql5.5)

现有数据库服务器A(192.168.2.3)在整个过程具体执行的操作:

A的/etc/my.cnf 里面server-id       = 1

1.   给予从数据库权限:

/usr/local/mysql/bin/mysql –uroot -p

grant replication slave on *.* to username@'192.168.2.7' identified by 'userpasswd';

flush privileges;

2. 刷新二进制日志:

reset master;

quit;

3. 完整备份整个数据库

/usr/local/mysql/bin/mysqldump -uroot -p --master-data=2 --databases date1date2 date3  > /root/mysqlbak.sql

scp -P 4000 mysqlbak.sql 192.168.2.7:/root  #scp推送到从服务器

head -n 23 mysqlbak.sql      #得到mysql-bin的日志文件名称和MASTER_LOG_POS的值,从数据库同步需要用

-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=458;


说明:自己做过实验,用来证实mysqldump操作的时候,MASTER_LOG_POS的值是什么时间点产生的,得到的结果是执行mysqldump命令前,在mysqldump过程中,数据库是锁定的,不能写,所以在从数据库执行的时候,把master_log_pos指向这个数字就是正确的


从数据库(192.168.2.7)上执行的操作:

B的/etc/my.cnf 里面

server-id = 2
read-only = 1
max_relay_log_size = 2G
relay_log_purge = 1
relay_log_recovery = 1

1. 导入整个数据库备份:

/usr/local/mysql/bin/mysql -uroot -p

source /root/mysqlbak.sql

2. 配置主从:

reset master;

slave stop;

change master to MASTER_HOST='192.168.2.3', MASTER_PORT=3306,MASTER_USER='username', MASTER_PASSWORD='userpasswd',master_log_file='mysql-bin.000001', master_log_pos=458;

slave start;

show slave status\G;


同步需要的库及表

如果只对于A中某一个库的一个表做同步,那么在B中/etc/my.cnf 添加

[mysqld]

replicate-wild-do-table=database.table

(如果只同步某一个库,那么 replicate-wild-do-table=database.%)


主服务器配置:

binlog-do-db   //指定要记录二进制日志的数据库

binlog-ignore-db  //指定要忽略记录二进制日志的数据库


从服务器配置:

replicate-do-table=   //指定要记录二进制日志的表

replicate-ignore-table=  //指定要忽略记录二进制日志的表

replicate-do-db=  //指定要记录二进制日志的数据库

replicate-ignore-db=  //指定要忽略记录二进制日志的数据库

replicate-wild-do-table=  //指定要记录二进制日志的表(支持通配符)

replicate-wild-ignore-table=  //指定要忽略记录二进制日志的表(支持通配符)


比如数据库中有DBA,DBB,DBC       DBC中有表 ca,cb,cc

现在只需要同步DBC 中的cb和cc两个表,那么在从库如下配置即可
replicate-ignore-db = DBA

replicate-ignore-db = DBB

replicate-wild-do-table = DBC.cb
replicate-wild-do-table = DBC.cc


注意:

replicate-wild-ignore-table=db_name.%   #复制时忽略数据库及表

replicate-ignore-db 是通过use db来确定是否过滤的,而wild-ignore是通过真实被修改的表进行过滤的,更为准确,使用 replicate_wild_do_table和 replicate_wild_ignore_table 来解决跨库更新的问题

如果你不想复制某些临时表,请使用 --replicate-wild-ignore-table 选项。如:--replicate-wild-ignore-table=foo%.bar% , 意思是告诉slave线程不要复制匹配以foo开头和以bar开头的表

#需要同步的数据库 
replicate-do-db=cnb 
#启用从库日志,这样可以进行链式复制 
log-slave-updates 
#从库是否只读,0表示可读写,1表示只读 
read-only=1 
#只复制某个表

replicate-do-table=tablename 
#只复制某些表(可用匹配符)

replicate-wild-do-table=tablename% 
#只复制某个库 
replicate-do-db=dbname 
#不复制某个表 
replicate-ignore-table=tablename 
#不复制某些表 
replicate-wild-ignore-table=tablename% 
#不复制某个库 
replicate-ignore-db=dbname

前面用了do-db  后面的ignore-db不生效


在主和从的my.cnf里面[mysqld]下添加

log-slave-updates = true  //是否记录从服务器同步数据动作

sync-master-info = 1  

report-port = 3306

binlog_format=mixed  //设置二进制日志格式


登录mysql

slave stop;

在主show master status\G 记下mysql-bin.num和Position

在从执行 change master to master_log_file='mysql-bin.num', master_log_pos=____;

slave start;

show slave status\G










本文转自 bbotte 51CTO博客,原文链接:http://blog.51cto.com/bbotte/1424662,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
23 0
|
3天前
|
存储 SQL 关系型数据库
【MySQL】主从同步原理、分库分表
【MySQL】主从同步原理、分库分表
10 0
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(下)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
11 0
|
3天前
|
Java 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口(上)
【MySQL × SpringBoot 突发奇想】全面实现流程 · xlsx文件,Excel表格导入数据库的接口
15 0
|
3天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
24 0
|
3天前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
16 2
|
3天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
24 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
3天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
19 0
|
3天前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
24 0
|
3天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)

推荐镜像

更多