mysql从库比主库数据多_linux mysql主从复制配置
1、设置主库master的servie-id值并且开启bin-log功能参数
vi /etc/my.cnf
修改my.cnf的参数:
[mysqld]
server-id=1 //每一个库的server-id必须都不一样
log-bin=mysql-bin
2、检查参数是否成功设置并重新启动
egrep "server-id|log-bin" /etc/my.cnf
重启命令见:mysql安装或mysql数据库多实例
3、登录数据库检查参数的更改情况
show variables like ‘server_id‘;
show variables like ‘log_bin‘;
4、在主库上建立用于从库复制的账号
从库要想从主库复制数据,必须要有一个主库的账号允许从库访问
mysql -uroot -p‘zjl123‘
mysql> grant replication slave on *.* to [email protected]%‘ identified by ‘zjl123‘;
mysql> flush privileges;
这里*.*表示所有数据库的所有表,也可以指示某个数据库的某个表
rep 为同步的账号,10.0.0.% 为授权的主机网段,使用了%表示允许整个10.0.0.0的网段可以访问rep用户
replication slave 就是主从复制需要的权限
5、检查主库创建的rep复制账号是否成功
mysql>select user,host from mysql.user;
mysql>select user,host from mysql.user where user = ‘rep‘;
mysql>show grants for [email protected]%‘;
实现对主库锁表只读,用于备份主库的数据到从库,使同步前数据一致,锁表时如果超过设置时间不操作会自动解锁
6、数据库锁表并查看自动解锁时长参数:
mysql>flush table with read lock;
show variables like ‘%timeout%‘
7、查看主库当前binlog文件名和备份点,从库请求复制时就从这个点开始
mysql>show master status;
或者
mysql -u root -p ‘zjl123‘ -e "show master status"
锁表后一定要单开一个SSH窗口,导出主库数据,如果数据很大(50G以上),并且允许停机,可以停库直接打包数据文件进行迁移,那样更快。
8、备份主库数据:
mkdir /server/backup/ -p
mysqldump -u root -p ‘zjl123‘ --events -A -B |gzip >/server/backup/mysql_bak.$(date +%F).sql.gz
ls -l /server/backup/mysql_bak.$(date +F%).sql.gz
或者:
mysqldump -u root -p ‘zjl123‘ --events -A -B -x --master-data=1 |gzip >/server/backup/mysql_bak.$(date +%F).sql.gz
--master-data=1参数会在备份数据里增加如下语句
--position to start replication or point -in-time recovery from change master to master_log_file=‘mysql-bin-000005‘,master_log_post=107;
此时从库在change master 时就无需指定binlog文件名和位置了,因为在备份时已经备份了该语句
9、为了确保导出数据期间数据库没有数据插入,导库完毕时可以再次检查主库的状态信息,结果如下:
mysql -u root -p ‘zjl123‘ -e "show master status"
若无特殊情况,binlog文件及位置点和锁表后导出数据前是一致的
10、开锁数据库表
mysql>unlock tables;
以下是从库上执行的操作
11、设置server-id值并关闭binlog功能
数据库的server-id一般在一套主从复制体系内是唯一的,这里从库的server-id要和主库及其他的从库的不同,并且要注释掉从误国的binlog参数配置,如果从库不需要做级联复制,并且不做备份用,就不需要开启binlog功能,开启了反而会增加从库磁盘的i/o压力。
但是,有以下两种情况需要打开从库的binlog功能,记录数据库更新的sql语句:
1、作为形如:A-->B-->C这样的级联同步,中间的B数据库,就要开启binlog功能。
2、在从库需要备份时要开启binlog功能,因为数据库备份必须要有,全备和binlog日志,才是完整的备份。
12、把主库msqldump的数据导入到从库
cd /server/backup/
ls -l
ll
mysql -uroot -p‘zjl123‘ -S /data/3307/mysql.sock < mysql_bak.2015-07-27.sql
提示:如果备份时用了-A参数,则在还原到3307的时候,登录3307实例的密码也会和3306主库的一致,因为3307实例的授权表mysql也被覆盖了。
13、登录3307数据库后,配置复制参数
CHANGE MASTER TO
MASTER_HOST=‘10.0.0.7‘,#主库的IP
MASTER_PORT=3306,#主库的端口
MASTER_USER=‘rep‘,#主库上建立的用于复制的用户rep
MASTER_PASSWORD=‘zjl123‘,#rep的密码
MASTER_LOG_FILE=‘mysql-bin.000008‘,#binlog二进制文件 的名称
MASTER_LOG_POS=342;#binlog二进制文件 的偏移量,即复制开始点
以上命令需要登录mysql之后在mysql里执行
也可以通过不登录数据库的内部命令行实现,如在命令行中输入命令如下:
mysql -uroot -p‘zjl123‘ -S /data/3307/mysql.sock<< EOF
CHANGE MASTER TO
MASTER_HOST=‘10.0.0.7‘,
MASTER_PORT=3306,
MASTER_USER=‘rep‘,
MASTER_PASSWORD=‘zjl123‘,
MASTER_LOG_FILE=‘mysql-bin.000008‘,
MASTER_LOG_POS=342;
EOF
上述的操作原理是把用户、密码、主库端口、IP等信息写入从库的master.info文件中。
查看写入结果如下:
ll /data/3307/data/master.info
cat /data/3307/data/master.info
14、启动从库同步开关,并查看同步状态
mysql -uroot -p‘zjl123‘ -S /data/3307/mysql.sock -e "start slave;"
mysql -uroot -p‘zjl123‘ -S /data/3307/mysql.sock -e "show slave status\G;"
主从复制是否成功主要看以下3项的状态
mysql -uroot -p‘zjl123‘ -S /data/3307/mysql.sock -e "show slave status\G;"|grep "IO_Running|SQL_Running|_Behind_Master"
分别应该显示的内容为: yes yes 0
Slave_IO_Running: yes 这个是IO线程状态,IO线程负责从从库到主库读取binlog日志,并写入从库中继日志,状态为yes表示IO线程工作正常。
Slave_SQL_Running: yes 这个是SQL线程状态,SQL线程负责读取中继日志(relay-log)中的数据并转换为SQL语句应用到从数据库中,状态为yes表示sql线程工作正常。
Seconds_Behind_Master: 0,这个是复制过程中从库比主库延迟的秒数,这个参数很重要,但企业时更准确的判断主从复制延迟的方法为:在主库写时间戳,然后从库读取时间戳,和当前数据库时间进行比较,从而认定是否有延迟。
以上是主从复制的全部内容,测试主从复制,只需要在主库做修改操作,查看从库中是否做出了相同的改变即可。
15、查看mysql主从复制I/O线程状态
mysql>show processlist\G
16、问题一
当主库语句在从库执行时产生了冲突时,比如主库创建了一张表,从库已经存在该名称的表,就会创建不成功,这时候,主从同步就无法继续进行
解决:
show slave status\G
stop slave;#临时停止同步形状
set global sql-slave-skip-counter=1;#将同步指针移动一个,如果还不能同步,可以重复该操作
start slave;
set global sql-slave-skip-counter=n;#n>0,忽略执行n个更新
解决二:
可以根据错误号事先在配置文件中配置,跳过指定的不影响业务数据的错误,例如:
grep slave-skip /data/3306/my.cnf
slave-skip-errors = 1032,1062,1007
17从库需要记录binlog日志的方法:
在从库的my.cnf中加入如下参数,然后重启服务即可
log-slave-updates#必须要有这个参数
log-bin=/data/3307/mysql-bin
expire_logs_days=7#相当于find /data/3307/ -type f -name " mysql-bin.000*" -mtime +7 | xargs rm -f
mysql从库比主库数据多_linux mysql主从复制配置相关推荐
- mysql从库比主库数据多_MySQL常见的主从复制错误有哪些?如何处理?
目录 想把MySQL有变更的数据分发到其他异构数据库,都有什么可选方案 MySQL什么情况下DML操作不会记录binlog? MySQL中ANALYZE TABLE的作用是?生产上操作会有什么风险? ...
- mysql从库追主库日志_Mysql主库跑太快,从库追不上怎么做?
写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度,导致产生了主从延迟,出现了一点小事故. 主从常见架构 随着日益增长的访问量,单台数据库的应接能力已经捉襟见肘.因此采用 ...
- canal mysql从库_canal中间件|数据增量同步解决方案
上一文中提到延时双删等策略实现数据一致性的时候,可能存在删除缓存失败的情况,就会出现缓存和数据库不一致的问题.为了应对删除缓存失败而导致数据不一致的问题,可以通过回溯数据库日志文件,提供一个保障的重试 ...
- mysql从库追主库日志_MySQL 中主库跑太快,从库追不上怎么整?
写这篇文章是因为之前有一次删库操作,需要进行批量删除数据,当时没有控制好删除速度 ,导致产生了主从延迟,出现了一点小事故. 今天我们就来看看为什么会产生主从延迟以及主从延迟如何处理等相关问题. 坐好了 ...
- mysql删库后恢复数据流程
目录 前言 binlog 准备 备份 总结 前言 本文将介绍当我们使用mysql不小心删库之后,或者恶意被删库后,如何进行数据恢复 binlog 我们进行数据恢复的前提是: 1.必须开启binlog日 ...
- 设置mysql从库延迟主库一小时
便于数据恢复,设置从库延迟主库1个小时 此图借用李磊的 直接上图了 非本人笔记 CHANGE MASTER TO MASTER_DELAY = 1800:单位为秒 [root@backup ~]# m ...
- Python用tushare库获取股票数据批量存入mysql成功
之前用了很多方法无法批量存入mysql中,现在这个方法可以了 首先你需要安装tushare,现在最新版本是1.2.15 2018/10/15 如果之前没有安装,请用"开始-所有程序-附件-命 ...
- linux mysql插入数据乱码_linux mysql数据库中文乱码
mysql中文乱码 mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1. ...
- linux 版本mysql 数据乱码_linux mysql 数据库乱码
mysql中文乱码 mysql是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1. ...
最新文章
- C#发送邮件异常:根据验证过程,远程证书无效
- 数组洗牌算法-shuffle
- 3.2Python的循环结构语句:
- nodejs 游戏框架_nodejs游戏服务器框架
- IntelliJ IDEA中怎么创建xml文件?
- [self Introduce]热情洋溢的白羊座
- 3.SOA架构:服务和微服务分析及设计--- 理解服务与微服务的层次
- FMEA软件七步法(FMEAHunter)
- QQ空间权限限制破解思路
- Qt QComboBox详解
- PSCAD中的频变参数线路模型(Frequency-Dependent (Phase) Line Model)
- Oracle EBS APP-FND-02901: you don‘t have privilege to any operating unit
- 鼓励你大胆追梦的三个移动互联网案例
- 统计信息:SQL执行优化之密钥
- border-radius详解分享
- 华宇智能数据官网全新上线,赋能行业数字化转型
- 药品注册专员前景如何?5条职业规划发展方向
- uiautomator2 半自动发布视频脚本
- 律所CRM软件,适用于律师事务所的系统
- 建筑工程量计算机构,建筑工程量计算公式大全
热门文章
- liunx 谷歌浏览器清空缓存命令
- html设置默认选中状态,html中select标签用法解析及如何设置select的默认选中状态...
- 使用c++检查Linux系统某目录下硬盘空间,如果空间少于200m时删除最老的文件
- php 字符串转对象,php中怎么将对象转化为字符串
- Unity的地形Splat图片
- double check java_由java double check说起
- ElasticSearch集群缩容
- 老板不让用 AFNetworking,我该怎么办?
- MQTT安装部署手册
- uni.showModal使用