mysql主从增量同步_生产环境中mysql主从同步/完整/增量备份

环境:某项目的DB19数据库服务器,无从库也无开过binlog日志,负载有时比较高但基本运行稳定。备份情况:本地每天完整备份保留一周再rsync到异地备份机保留一月,由于数据量的增长加上每天晚上rsync到异地机时流量非常大,所以单独建台虚拟机作为DB19的备份。

备份措施:

1) DB19作为主库开启binlog日志。

2) DB19为从库开设同步帐号并开放复制权限。

3) DB19写脚本在凌晨一点锁表进行一次完整备份,并记录锁表前的binlog文件和position位置点(show master status\G;可查看信息)

4)  将备份的文件导入到从库并设置主从同步.

5)  从库上脚本实施每月1号本地进行一次全备,每天00-20每3小时进行一次增量备份(备份binlog日志)

1.DB19 主库设置并开启binlog日志

my.cnf配置文件更改:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

server-id=1       #id号在LAN中唯一

log-bin=log              #开启binlog日志

binlog-ignore-db=mysql   #忽略权限库的同步

max_connections=1000

long_query_time = 10

log-slow-queries = /var/log/mysql/mysql_slow.log  #开启慢查询日志

2. DB19为从库开设同步帐号

mysql>grant replication slave on *.* to 'sqlsync'@'192.168.7.51' identified by '123456';

mysql> flush privileges;

mysql> show grants for sqlsync@"192.168.7.51";

3. DB19凌晨一点完整备份脚本并记录锁表前master status信息

#!/bin/bash

################################################

#this scripts is bakdb19

################################################

MYUSER=root

MYPASS="pwd19"

MYSOCK=/var/lib/mysql/mysql.sock

DATA_PATH=/backup/0314

LOG_FILE=${DATA_PATH}/mysqllogs_0314.log

DATA_FILE=${DATA_PATH}/mysql_backup_0314.sql.gz

MYSQL_PATH=/usr/bin

MYSQL_CMD="$MYSQL_PATH/mysql -u$MYUSER -p$MYPASS -S $MYSOCK"

MYSQL_DUMP="$MYSQL_PATH/mysqldump -u$MYUSER -p$MYPASS -S $MYSOCK -A  -B --flush-logs --single-transaction"

$MYSQL_CMD -e "flush tables with read lock;"

echo "-----show master status result-----" >>$LOG_FILE

$MYSQL_CMD -e "show master status;" >>$LOG_FILE

${MYSQL_DUMP} | gzip > $DATA_FILE

$MYSQL_CMD -e "unlock tables;"

脚本加入到crontab中:

0   01  *  *  *  sh /root/dbbak0314.sh>>/root/tasks/backup.log 2>&1

4. 将备份文件和记录master信息的文件.log复制到从库服务器

备份文件mysql_backup_0314.sql.gz

master信息的文件mysqllogs_0314.log

1)从库安装:

#yum install mysql mysq-server

#my.cnf配置文件:

[mysqld]

datadir=/data/mysql

socket=/data/mysql/mysql.sock

user=mysql

log-bin=log

#mysql_install_db

#/etc/init.d/mysqld start

2)数据导入

#gzip -d mysql_backup_0314.sql.gz

#mysql -S /data/mysql/mysql.sock

#more mysqllogs_0314.log

-----show master status result-----

File    Position        Binlog_Do_DB    Binlog_Ignore_DB

log.000003      61139130                mysql

3)配置同步

# vi /root/.my.cnf   创建密码文件,省得mysql进去每次输入密码

[client]

password=pwd19

mysql> CHANGE MASTER TO

->   MASTER_HOST='192.168.7.19',

->   MASTER_USER='sqlsync',

->   MASTER_PASSWORD='123456',

->   MASTER_PORT=3306,

->   MASTER_LOG_FILE='log.000003',    #指向锁表前记录的binlog文件和位置点,可查看mysqllogs_0314.log

->   MASTER_LOG_POS=61139130,

->   MASTER_CONNECT_RETRY=60;

Query OK, 0 rows affected (0.08 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;

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

Slave_IO_State: Queueing master event to the relay log

Master_Host: 192.168.7.19

Master_User: sqlsync

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: log.000028

Read_Master_Log_Pos: 4

Relay_Log_File: mysqld-relay-bin.000002

Relay_Log_Pos: 229

Relay_Master_Log_File: log.000003

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1062

Last_Error: Error 'Duplicate entry '197963' for key 1' on query. Default database: 'agrocms'. Query: 'INSERT INTO rocms.web_swgkbdxx (web_id,town_code,name,area,bdxx,swgk,bdxxsum,swgksum,day) values ('116597','330522105212','xx村','xx/xx/xx县/xx镇/xx村',0,0,0,17,'2013-03-14')'

Skip_Counter: 0

Exec_Master_Log_Pos: 61139130

Relay_Log_Space: 5383075

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: NULL

1 row in set (0.25 sec)

ERROR:

No query specified

mysql> INSERT INTO rocms.web_swgkbdxx (web_id,town_code,name,area,bdxx,swgk,bdxxsum,swgksum,day) values ('116597','330522105212','xx村','xx/xx/xx县/xx镇/xx村',0,0,0,17,'2013-03-14');

ERROR 1062 (23000): Duplicate entry '116597-2013-03-14' for key 2 提示错误重复插入

解决方法:

mysql>set global sql_slave_skip_counter=1;不行,因为后面很多重复的insert语句执行不了同样的提示错误

只好将slave-skip-errors=1062加入到my.cnf中 跳过错误代码为1062(重复更新)的所有语句.

mysql> show slave status\G;

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

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.7.19

Master_User: sqlsync

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: log.000029

Read_Master_Log_Pos: 189077906

Relay_Log_File: mysqld-relay-bin.000058

Relay_Log_Pos: 34636888

Relay_Master_Log_File: log.000029

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: 189077906

Relay_Log_Space: 34636888

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

1 row in set (0.00 sec)

ERROR:

No query specified

已同步OK,可用checksum来检验主从同步数据的一致性,线上机器需锁表,暂不检验了

补充:

Slave_IO_Running: No 极有可能是网络问题或主库设了防火墙阻挡了,或设置的MASTER_LOG_POS位置信息不对.

测试OK,最好再将change master to信息在my.cnf配置文件中指定下:

# more /etc/my.cnf

[mysqld]

datadir=/data/mysql

socket=/data/mysql/mysql.sock

user=mysql

log-bin=log

expire-logs-days=3

log-slave-updates

server-id=2

master-host=192.168.7.19

master-user=sqlsync

master-password=wer852

master-port=3306

master-connect-retry=60

relay-log=mysqld-relay-bin

5. 从库完整+增量备份脚本(暂略)

6. 恢复

1)目录级的备份,恢复时可直接进行目录的恢复frm,MYD,MYI文件

2)mysqldump全备加--tab参数时会生成sql和txt两个文件,sql记录所有包括create table的相关表结构更新语句,txt是数据文件。恢复时mysql先执行sql语句,再mysqlimport执行txt文件,如果表结构无更改,恢复时可直接mysqlimport导入txt文件.

3)mysqdump全备+增量备份,先最近一次的全备恢复,如果有多个binlog可按时间顺序逐个导入.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10如何删除注册表残留文件

win10如何删除注册表残留文件?下面一起来看看如何操作吧。 1、按下“winr”打开运行,输入“regedit”,点击“确定”; 2、依次展开“HKEY_LOCAL_MACHINESOFTWAREMicrosoftwindowsCurrentVersionUninstall”; 3、在该子键下根据已卸载的应用程序软件图标…

mysql 设计模式_mysql – 你会推荐什么版本设计模式

我不认为版本控制中没有特定的GoF设计模式本身,因为它存在许多实现。版本控制的最简单的实现是对象的链表。其中列表中的每个节点都是可版本化对象的新版本。为了节省空间,您还可以实现某种diff,以显示修订版本之间的区别。这样,您…

win7中如何设置默认打印机

1、单击win7电脑的开始菜单,然后在打开的菜单中选择设备和打印机。 2、之后出现新的窗口,在新窗口中就可以找到目前win7电脑中连接的所有的打印机了。 3、只需要选中自己想要设置的打印机,然后点击鼠标右键,在出现的下滑菜单中选…

jmeter连接mysql数据库驱动_十八、JMeter实战-JDBC连接MySQL数据库

前言连接数据库进行测试在工作中会比较常用,首先可以读取数据库的数据进行参数化、关联等,批量添加测试数据以及清理数据,还可以直接对SQL语句进行压测。一、基本介绍1. 首先第一步要导入mysql驱动包,放到jmeter/lib目录下&#x…

xp电脑怎么取消开机密码

1.点击菜单,选择并打开控制面板 2.找到用户账号 3.点击更改密码 4.输入你想修改的密码,不要密码就不用输,直接保存更改即可,接着重启电脑就可以看到没有开机密码的提示了。 ​转:浏览器大全 xp电脑怎么取消开机密码…

下如何查看mysql表单_Navicat 教程:如何进行表单查看

Navicat 表单查看方便表单查看、更新或删除数据,显示当前的记录:栏位名及其值。表单的弹出菜单包括这些功能:设置栏位值为 Null 或空白字符串、使用当前栏位值为筛选、设置表单查看格式及更多,导览栏可以快速切换记录、插入、更新…

鼠标有拖尾怎么办

1、首先依次打开“开始菜单-控制面板”选项; 2、在控制面板中找到并打开“鼠标”选项; 3、在弹出来的鼠标属性窗口中,切换到“指针选项”标签下,然后在下方的可见性一栏中将“显示指针轨迹”前面的勾取消掉,点击确定按钮退出即可。 转&…

怎么禁止开机启动nvidia

1、单击开始菜单,选择运行,打开运行后输入services.msc 确定。 2、打开本地服务后,在列表中找到NVIDIA Display Driver Service服务。 3、双击打开该服务,然后将NVIDIA Display Driver Service服务的启动类型设置为禁用&#x…

mysql insert 错误码_利用 MySQL 自身错误诊断区域-爱可生

原标题:利用 MySQL 自身错误诊断区域-爱可生背景本篇文章来源于今天客户问的一个问题。问题大概意思是:我正在从 Oracle 迁移到 MySQL,数据已经转换为单纯的 INSERT 语句。由于语句很多,每次导入的时候不知道怎么定位到错误的语句…

win7打不开qq文件怎么办

1、这种情况是因为QQ为了用户安全,防止传过来的文件是病毒,在电脑上自动运行而做的修改,针对的是.EXE等WINDOWS系统可执行的文件,会自动在文件名称后面加上.重命名三个字。如果确认不是病毒,在该文件点击右键&#xff…

mysql子查询_笔记之MySQL子查询

子查询students(学生表),scores(成绩表)、courses(课程表)子查询:在select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,子查询分(标量子查询、列子查询、行子查询、表子查询)标量子查询: 子查询返回的结果…

win7开机后所有程序都打不开怎么办

win7开机后所有程序都打不开怎么办?下面一起来看看解决方法吧。 win7开机后所有程序都打不开怎么办 方法一: 1、开机按F8进入安全模式; 2、安装杀毒软件,全盘杀毒; 3、重启电脑电脑可以正常使用。 方法二、系统故障或病毒彻底损坏系统无法修复&am…

mac版crt8.0.2打开无响应怎么办_Mac电脑程序无响应怎么办?教你强制退出无响应程序...

Mac电脑运行时间长了,难免也会遇到程序卡死无响应的情况,可能是由于程序冲突、缓存不足或者一些bug等情况导致,这个时候我们就需要强制退出这个程序了,一起来看看如何强制退出无响应程序吧!快捷键强制退出当前运行的应…

win7自带防火墙怎么关闭

1、首先点击win7系统的开始菜单,在菜单中找到并点击打开“控制面板”; win7自带防火墙怎么关闭 2、进入控制面板后,点击窗口右上角的查看方式的“类别”,选择大图标显示; 3、接着在界面里面选择并打开“Windows防火墙”; 4、进入Windows防…

python拼写_python 拼写检查器

简短到爆的py脚本import refrom collections import Counterdef words(text):return re.findall(r\w,text.lower())Words Counter(words(open(big.txt).read()))def P(word,Nsum(Words.values())):return Words[word] / Ndef correction(word):return max(candidates(word), k…

win7如何关闭密码保护共享

1、首先打开控制面板,选择用户账户和家庭安全。 2、其次点击用户账户。 3、然后选择管理其他账户。 4、接着点击Guest,点击启用。 5、之后关闭窗口,右击点击计算机,选择管理。 6、接着按顺序点击本地用户和组、用户&#xff0…

python英文字典小程序_python 小程序—三级菜单—循环和字典练习

程序中利用多级字典来存储三级菜单, 通过一系列while循环和for循环,实现了三级菜单的查询,选择,退回上级菜单,退出程序几个功能。缺点:程序语句过于重复,效率低。#-*-coding:utf-8-*-date{北京:…

win7电脑假死机怎么办

1、正在使用电脑,如果网页或一些页面卡住不动,我们首先要保持电脑的正常运行。这时候可以同时按WinD,可以马上回到桌面。然后尝试着刷新几次。 2、当回到桌面后,我们试着看看是不是运行的软件太多了,造成电脑运行不动…

ubuntu mysql master slave_Ubuntu下MySQL5.5 配置主从(Master Slave)同步

折腾了将近3个小时!终于把mysql的主从同步给配置成功了!网上的不少例子都行不通(也许是版本问题).官网看了一下原版的tutorial,还是比较懵逼.....最后,通过官网的教程和自己的摸索,终于弄好mysql 主从复制了..在此记录一下.1.环境:1.1.vmware 121.2.ubuntu14.041.3.Master Ip:1…

怎么关闭u盘写保护

通过电脑对U盘设置的了写保护。在U盘盘符的上方点击右键,在弹出的菜单中点击属性。 在属性窗口上方找到并点击安全,在安全选项卡中部找到并点击编辑。 在打开的窗口上部选中everyone,然后在下方everyone的权限中勾选完全控制,最后…