mysql_3

主从同步
Mysql主从同步其实是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,整个过程需要开启3个线程,分别是Master开启IO线程,slave开启IO线程和SQL线程。
1、在从服务器执行slave start,从服务器上IO线程会通过授权的用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志内容。在master上开启bin-log日志功能,记录更新、插入、删除的语句。
2、Master服务器接收到来自slave服务器的IO线程的请求后,master服务器上的IO线程根据slave服务器发送的指定bin-log日志之后的内容,然后返回给slave端的IO线程。(返回的信息中除了bin-log日志内容外,还有本次返回日志内容后在master服务器端的新的binlog文件名以及在binlog中的下一个指定更新位置。)
3、Slave的IO线程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master.info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪 个位置开始往后的日志内容,请发给我”;
4、Slave的Sql线程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
5、主从同步是属于异步方式。

在主和从服务器都安装mysql相关软件
yum install -y mysql mysql-devel mysql-server mysql-libs

在Master修改配置文件
vi /etc/my.cnf
[mysqld]
添加
log-bin=mysql-bin
server-id = 1
auto_increment_offset=1
auto_increment_increment=2
在[mysqld_safe]下添加
replicate-do-db =jfedu

datadir = path
从给定目录读取数据库文件。
socket = filename
为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统;默认设置一般是/var/lib/mysql/mysql.sock文件)。在Windows环境下,如果MySQL客户与服务器是通过命名管道进行通信的,–sock选项给出的将是该命名管道的名字(默认设置是MySQL)。
user = name mysqld
程序在启动后将在给定UNIX/Linux账户下执行; mysqld必须从root账户启动才能在启动后切换到另一个账户下执行; mysqld_safe脚本将默认使用–user=mysql选项来启动mysqld程序。
log-bin [= filename]
把对数据进行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二进制格式记入日志(二进制变更日志,binary update log)。这种日志的文件名是filename.n或默认的hostname.n,其中n是一个6位数字的整数(日志文件按顺序编号)。
server-id = n
给服务器分配一个独一无二的ID编号; n的取值范围是1~2的32次方启用二进制日志功能。
auto_increment_offset
表示自增长字段从那个数开始,他的取值范围是1 … 65535
auto_increment_increment
表示自增长字段每次递增的量,其默认值是1,取值范围是1 … 65535
log-error
错误日志
pid-file = filename
为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程。
replicate-do-db =jfedu
允许slave同步哪个库

启动mysql
service mysqld restart

在slaver修改配置文件
vi /etc/my.cnf
[mysqld]
添加
user=mysql
server-id = 2
auto_increment_offset=2
auto_increment_increment=2
启动mysql
service mysqld restart

在Master数据库服务器上设置权限,执行如下命令:
mysql> grant replication slave on . to ‘root’@’%’ identified by ‘521365’;
在Master 数据库执行如下命令:
mysql> show master status;
  记录下 FILE 及 Position 的值,在后面进行从服务器操作的时候需要用到。
在slave服务器指定master IP和同步的pos点:
mysql> change master to
master_host=‘192.168.1.169’,
master_user=‘root’,
master_password=‘521365’,
master_log_fil e=‘mysql-bin.000001’,
master_log_pos=416;
在slave启动slave start,并执行show slave status\G查看Mysql主从状态:
start slave;
show slave status\G
Slave_IO_Running: Yes Slave_SQL_Running: Yes两个状态为YES,代表slave已经启动两 个线程,一个为IO线程,一个为SQL线程。

在Master服务器创建一个数据库和表,然后去slave服务器查看是否有数据库和相应的表,如果存在则代表Mysql主从同步搭建成功。
如果master服务器down机了,如何快速恢复服务呢?
可以通过两种方法:
第一种方法,如果程序连接的是master的IP,直接在slave服务器上添加master的IP即可。这个手动去操作,而且需要花费时间比较长,可能还会出现误操作的情况,不推荐。
第二种方法,可以使用keepalived、heartbeat作为HA检测软件,检查MySQL服务是否正常,不正常则自动切换到slave上,推荐使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值