MySQL数据库设置主从同步
MySQL主从同步的机制:
MySQL同步的流程大致如下:
1、主服务器(master)将变更事件(更新、删除、表结构改变等等)写入二进制日志(master log)。
2、从服务器(slave)的IO线程从主服务器(binlog dump线程)获取二进制日志,并在本地保存一份自己的二进制日志(relay log)
3、从服务器的SQL线程读取本地日志(relay log),并重演变更事件。
MySQL主从同步的作用:
1、可以作为一种备份机制,相当于热备份(在从备份,避免备份期间影响主服务器服务)
2、可以用来做读写分离,均衡数据库负载(主写从读)
3、当主服务器出现问题时,可以切换到从服务器。
MySQL主从同步的步骤:
一、准备操作:
1、主从数据库版本一致,建议版本5.5以上
2、主从数据库数据一致
二、主数据库master修改:
1、修改MySQL配置:(/etc/mysql/mysql.conf.d/mysqld.cnf)追加
log-bin = mysql-bin 开启bin-log,并指定文件目录和文件名前缀。
server-id = 1#服务器标志号,注意在配置文件中不能出现多个这样的标识,如果出现多个的话mysql以第一个为准,一组主从中此标识号不能重复。
log-bin=/var/log/mysql/mysql-binlog 指定文件目录和文件名前缀。
max_binlog_size = 500M #每个bin-log最大大小,当此大小等于500M时会自动生成一个新的日志文件。一条记录不会写在2个日志文件中,所以有时日志文件会超过此大小。
binlog_cache_size = 128K #日志缓存大小
binlog_do_db = adb #需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
binlog_ignore_db = mysql #不需要同步的数据库名字,如果是多个,就以此格式在写一行即可。
log-slave-updates #当Slave从Master数据库读取日志时更新新写入日志中,如果只启动log-bin 而没有启动log-slave-updates则Slave只记录针对自己数据库操作的更新。
expire_logs_day=2 binlog_format="MIXED" #设置bin-log日志文件格式为:MIXED,可以防止主键重复。
2、重启mysql,创建用于同步的账户:
# 创建slave帐号qql,密码123456
mysql>grant replication slave on *.* to 'slave'@'%' identified by '111111';
# 更新数据库权限
mysql>flush privileges;
3、查询master的状态
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000009 | 196 | | |
+------------------+----------+--------------+------------------+
1 row in set
三、从数据库slave修改:
1、修改MySQL配置:
# 从数据库端ID号
server-id =2
2、执行同步命令
# 执行同步命令,设置主数据库ip,同步帐号密码,同步位置
mysql>change master to master_host='192.168.1.2',master_user='slave',master_password='111111',master_log_file='mysql-bin.000009',master_log_pos=196;
# 开启同步功能
mysql>start slave;
3、检查从数据库状态:
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.2
Master_User: slave_account
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000009
Read_Master_Log_Pos: 196
Relay_Log_File: vicky-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
...
...
注:Slave_IO_Running及Slave_SQL_Running进程必须正常运行,即YES状态,否则说明同步失败。可用这两项判断从服务器是否挂掉
四、其他可能用到的相关参数:
1、master端:
# 不同步哪些数据库
binlog-ignore-db = mysql
binlog-ignore-db = test
binlog-ignore-db = information_schema
# 只同步哪些数据库,除此之外,其他不同步
binlog-do-db = game
# 日志保留时间
expire_logs_days = 10
# 控制binlog的写入频率。每执行多少次事务写入一次
# 这个参数性能消耗很大,但可减小MySQL崩溃造成的损失
sync_binlog = 5
# 日志格式,建议mixed
# statement 保存SQL语句
# row 保存影响记录数据
# mixed 前面两种的结合
binlog_format = mixed
2、slave端:
# 停止主从同步
mysql> stop slave;
# 连接断开时,重新连接超时时间
mysql> change master to master_connect_retry=50;
# 开启主从同步
mysql> start slave;
以上连接超时设置,类似方式可用于设置主数据库ip,同步帐号密码,同步位置
拓展:在master上开启bin-log记录的是所有的数据库的,但是slave上只需要同步来 某个数据库的,这个时候如何在 slave上指定需要同步的数据库。
1
2
3
4
|
STOP SLAVE; SET GLOBAL replicate_do_db = "mydb1,mydb2" ; SET GLOBAL replicate_wild_ignore_table = "mydb1.local_%" ; START SLAVE; |
MySQL数据库设置主从同步的更多相关文章
- MySQL Replication 详解MySQL数据库设置主从同步的方法
MySQL同步的流程大致如下: 1.主服务器(master)将变更事件(更新.删除.表结构改变等等)写入二进制日志(master log). 2.从服务器(slave)的IO线程从主服务器(binl ...
- mysql数据库的主从同步,实现读写分离 g
https://blog.csdn.net/qq_15092079/article/details/81672920 前言 1 分别在两台centos 7系统上安装mysql 5.7 2 master ...
- MySQL数据库的主从同步复制配置
一.主从同步机制原理 MYSQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态), ...
- mysql数据库的主从同步,实现读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别 ...
- MySQL数据库的主从同步
什么要进行数据库的主从同步? 防止单点故障造成的数据丢失 主从复制的原理 MySQL从数据库开启I/O线程,向主服务器发送请求数据同步(获取二进制日志) MySQL数据库开启I/O线程回应从数据库 从 ...
- MySQL数据库的主从同步实现及应用
>>主从同步机制及应用 读写分离(Read/Write Splitting)让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),从数据库处理SELECT查询操作 ...
- mysql数据库配置主从同步
MySQL主从同步的作用 .可以作为一种备份机制,相当于热备份 .可以用来做读写分离,均衡数据库负载 MySQL主从同步的步骤 一.准备操作 .主从数据库版本一致,建议版本5.5以上 .主从数据库数据 ...
- Zabbix检测Mysql数据库的主从同步
在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成检测网站正常运行的重要环节 ...
- mysql 数据库的主从同步
1.复制准备 操作系统 centOS 主库(mysql master): ip为123.56.94.1 port为3306 mysql 版本 5.7.16 从库(mysql slave): ...
随机推荐
- 《从零开始学Swift》学习笔记(Day 33)——属性观察者
原创文章,欢迎转载.转载请注明:关东升的博客 为了监听属性的变化,Swift提供了属性观察者.属性观察者能够监听存储属性的变化,即便变化前后的值相同,它们也能监听到. 属性观察者主要有以下两个: l ...
- 关于string的replace方法
今天写代码遇见一个小问题,就是当string a,b,c,d当腰删除b的时候如果replace(“a”,"");会造成,b,c,d 所以得replace("a&qu ...
- jQuery之获取checkbox选中的值
<mce:script src="jquery.js" mce_src="jquery.js"></mce:script><!-- ...
- tomcat 配置自签名ssl证书
背景:据说17年苹果app必须走https协议与后台交互了,网上各种搜索最后还是发现有2篇写的比较全面,折腾后总结出2种实现方式.在这里记录,方便有共同需求的同学们参考 本文只介绍生成自签名ssl证书 ...
- Go语言的一些问题
1.go 运行错误expected 'package', found 'EOF'解决? 只要将文件保存一下,再运行就ok了. 2.问题如下: D:\goprojects>go buildcan' ...
- 一个有趣的IP不同的问题?
1.我们已经知道了内网和外网的显示是不同的. 2.今天发现了我的飞Q传输上显示的ip和电脑上网络中显示的ip不同,但是传输文件是可以的,至于这个问题目前没有找到合理的解释,解释这个问题,但是这样就奇怪 ...
- PLSQL 用的让自己更舒心点!
每天开发时候 ,有时候会疲劳! 改下你的PLSQL 字体吧!
- 构造函数强制使用new
function Car(model, year, miles) { if (!(this instanceof Car)) { return new Car(model, year, miles); ...
- python系列九:python3迭代器和生成器
#!/usr/bin/python import sys '''迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退.迭代器有 ...
- Delphi线程的初级应用
viewRadio_th线程函数在form外生命全局变量.函数内相应的局部变量可以接收全局变量的赋值进行操作.query等可以自行创建进行查询.这样结果不会改变. //下面是后台发送字幕的线程函数应用 ...