mysql slave master_MySQL Master/Slave Master/Master

MySQL Master/Slave原理分析:

单向同步是基于MySQL的二进制日志的(binlog),所以要开启二进制日志功能(默认开启)。MySQL将所有更新的内容记录到二进制日志中,Master/Slave通过三个线程来完成同步。在Master上有一个线程,用来发送二进制日志,在Master上show processlistG可以查看线程的名字(Binlog Dump)。在Slave上有两个线程,I/O线程用来连接Master,接受来自Master的更新二进制日志,并把它保存到中继日志(relay log)中,SQL线程用来读取中继日志中SQL语句并执行更新操作。

Master/Slave优点:

系统服务稳定:当Master宕机时,可以切换Slave服务。

系统服务速率加快:更新操作在Master上进行,查询操作在Slave上进行,达到了负载均衡的效果,减轻了Master的负载,加快服务响应时间。

系统数据易备份、恢复:数据备份可以在Slave上进行而不干扰Master的服务。

注意:

一切更新操作要在Master上进行,否则会造成Master/Slave同步冲突。

两个数据库版本要相同,或者slave比master版本高![@more@]

MySQL安装过程可以参考附件脚本。

Master:192.168.10.21

Slave:192.168.10.22

Master:

创建同步账户,并给予权限

grant all on test.* to mysql@192.168.10.22 identified by 'mysql';

flush privileges;

配置/etc/my.cnf

在[mysqld]下添加配置参数

log-bin=mysql-bin 启动二进制日志系统,默认启动binlog-do-db=test 二进制需要同步的数据库名

server-id=1binlog-ignore-db=mysql 避免同步 mysql 用户配置,以免不必要的麻烦

/etc/init.d/mysql restart

Slave:

配置 /etc/ my.cnf 文件

在[mysqld]下添加一下参数

server-id=2 从服务器 ID 号,不要和主 ID 相同,

如果设置多个从服务器,每个从服务器必

须有一个唯一的server-id值,必须与主服

务器的以及其它从服务器的不相同。可以

认为server-id值类似于IP地址:这些ID值

能唯一识别复制服务器群集中的每个服务

器实例。

master-host=192.168.10.21 指定主服务器 IP 地址

master-user=mysql 指定在主服务器上可以进行同步的用户名

master-password=mysql 密码

master-port=3306 同步所用的端口

master-connect-retry=60 断点重新连接时间

replicate-ignore-db=mysql 屏蔽对 mysql 库的同步,以免有麻烦

replicate-do-db=test 同步数据库名称

/etc/init.d/mysqld restart

在Master上执行 show master satus;

mysql> show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000011 | 196 | test | mysql |

+------------------+----------+--------------+------------------+

在Slave上执行show slave statusG

.......

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

........

说明数据正在同步,如果执行结果是empty,执行以下操作

在slave上执行以下命令:

slave stop;

change master to master_host='192.168.10.21', master_user='mysql',

master_password='mysql, master_log_file='mysql-bin.000011',

master_log_pos=196;

slave start;

测试方法:在Master上更新test数据库,查看Slave test数据库的内容是否更新。

搭建双向同步

其实原理很简单,只需要把Master/Slave变成 Master/Master就行。配置简单,倒着顺序再配置一遍就行

在Master配置添加:

master-host=192.168.10.22

master-user=mysql

master-password=mysql

master-port=3306

master-connect-retry=60

replicate-ignore-db=mysql

replicate-do-db=test

/etc/init.d/mysqld restart

在Slave执行操作:

grant all on test.* to mysql@192.168.10.21 identified by 'mysql';

flush privileges;配置添加:log-bin=mysql-bin

binlog-do-db=test

binlog-ignore-db=mysql 避免同步 mysql 用户配置,以免不必要的麻烦

/etc/init.d/mysqld restart

首先实现Master/Slave的第一个优点:数据备份可以在Slave上进行而不干扰Master的服务

采用scp服务进行备份

192.168.10.16是文件服务器

192.168.10.22是Slave

首先需要开启ssh服务,在Slave上使用ssh-keygen生成公钥文件id_rsa.pub

ssh-copy-id -i .ssh/id_rsa.pub westos@192.168.10.16

Slave采用ssh登录文件服务器不需要密码了

测试:ssh westos@192.168.10.16

发现直接进入文件服务器

备份脚本见附件

备份周期

crontab -e 每天凌晨备份数据库

0 0 * * * /opt/mysqldump.sh(备份脚本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值