ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> MySql >> mysql主从复制-mysql5.6配置主从复制

mysql主从复制-mysql5.6配置主从复制

来源:网络整理     时间:2014-12-12     关键词:

本篇文章主要介绍了"mysql主从复制-mysql5.6配置主从复制",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下: 1 简介2 ********************编辑中*****************345678910master主机上: 开启二进制日志,建立主...

1 简介
2 ********************编辑中*****************
3
4
5
6
7
8
9
10
master主机上:
    开启二进制日志,建立主机唯一server ID。
    在主机上开启二进制日志是因为它是master向slave复制变化数据的基础。
    对一个复制组里的主机建立唯一server ID是为了将一组内的数据库服务器区分开来,server ID的取值范围为1至2^32-1之间任意值。
    配置binlog及server ID时需要关闭mysql服务器,编辑my.cnf或my.ini文件,在[mysqld]选项下添加log-bin及server-id选项,例如:
[mysqld]
log-bin=mysql-bin
server-id=1
    更改完后重启mysql服务器。
    注意事项:
    1 如果我们忽略了server ID选项或明确指定其值为默认值0,master主机将拒绝来自slave从机的任何连接。
    2 对于Innodb事务,为了提高数据的持久性及连续性,我们应该在my.cnf里面设置
[mysqld]
innodb_flush_log_at_trx_commit=1
sync_binlog=1
    innodb_flush_log_at_trx_commit = 1:这也是Innodb 的默认设置。我们每次事务的结束都会触发Log Thread 将log buffer 中的数据
写入文件并通知文件系统同步文件。这个设置是最安全的设置,能够保证不论是MySQL Crash 还是OS Crash 或者是主机断电都不会丢失任何
已经提交的数据。
    sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
    3 确保master主机上skip-networking选项是禁用的,否则master主机数据库只允许通过本地mysql.sock文件进行连接,slave从机将无
法联系到主机。
[mysqld]
#skip-networking
master主机上:
    开启二进制日志不是必要操作,server ID一定要设置,my.cnf文件中server-id需要设置并且与master的server-id不能冲突,例如:
[mysqld]
#log-bin=mysql-bin
server-id=2
    如果有多个从机,每个从机的server-id都不能与master主机及其它slave从机相同。
    设置完后重启slave从机服务器。
    注意事项:
    如果我们没有指定server-id或指定server-id数字为默认值0,slave从机都不会去连接主机。
    如果我们开启了从机的二进制日志,我们可以将从机的binlog用于数据备份及数据损坏恢复,也可以用于复杂的复制拓扑结构中,如当
前从机作为其它从机的主机。
创建复制用户
每个slave连接到master需要使用用户名及密码,所以master主机上需要创建用于slave访问的用户及密码。我们可以在master主机上为每个slave创建一个访问的用户名及密码,不同的slave也可以访问master的同一个用户名及密码。
使用CREATE USER创建复制用户
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'replpsssword';
使用GRANT 
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
或者直接使用一条命令代替
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'replpsssword';
获取二进制日志位置信息
如果master主机上有数据,我们同步之前,需要停止向主机上做更新操作,获取master的文件及位置信
息,然后将主机数据导出,导出数据可通过mysqldump等相关工具或者直接拷贝data目录。
获取master主机二进制文件位置需要如下两个步骤:
1 在master主机上使用mysql命令行客户端,将所有数据刷进磁盘,并阻塞所有的写入操作
mysql> FLUSH TABLES WITH READ LOCK;
    注意:
    执行该命令的mysql命令行客户端一旦关闭,该命令便会失效。
2 在master主机上使用mysql命令行客户端,查看binlog日志信息
mysql> SHOW MASTER STATUS;        
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      318 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
【图 show master status】
    我们可以看到包括文件名,同步位置等信息。
同步前数据备份
在slave从机开始同步前,需要先将主机的备份文件导入,master主机备份有多种方式,我们介绍两种简单方式
1 使用mysqldump
[root@HA1 data]#  /usr/local/mysql/bin/mysqldump --all-databases --master-data > /tmp/datadump.db
    --master-data:该参数有两个值1和2,默认为1,mysqldump导出数据时,当这个参数的值为1的时
候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file
和position的记录,在slave上导入数据时就会执行这个语句,salve就会根据指定这个文件位置从
master端复制binlog。当这个值是2的时候,chang master to也是会写到dump文件里面去的,但是这个
语句是被注释的状态。
    使用该参数时,执行mysqldump前就没有必要在master主机上执行FLUSH TABLES WITH READ LOCK和SHOW MASTER STATUS等相关操作。
【图change master to】
   mysqldump详细使用方法可参考我前面的文章:
http://blog.csdn.net/jesseyoung/article/details/41078947 
2 使用直接拷贝data目录
    如果数据量比较大,直接拷贝原始数据文件比使用mysqldump更加有效,也省去了执行insert语句更新索引的开销。
    包含InnoDB表的拷贝:
1 在master主机上使用mysql命令行客户端,将所有数据刷进磁盘,并阻塞所有的写入操作
mysql> FLUSH TABLES WITH READ LOCK;
2 在另外一个shell客户端关闭master数据库
[root@HA1 data]# mysqladmin shutdown
3 拷贝并压缩数据文件
[root@HA1 data]# tar czvf /tmp/databack.tar.gz /usr/local/mysql/data
4 重启mysql master服务
    不包含InnoDB表的拷贝:
1 在master主机上使用mysql命令行客户端,将所有数据刷进磁盘,并阻塞所有的写入操作
mysql> FLUSH TABLES WITH READ LOCK;
2 拷贝并压缩数据文件
[root@HA1 data]# tar czvf /tmp/databack.tar.gz /usr/local/mysql/data
3 释放读锁
mysql> UNLOCK TABLES;
设置同步复制
    1 初始安装mysql设置主从复制
    最简单的方式是在两台新安装的mysql主机上设置主从复制。
    设置步骤如下:
    1 配置master主机my.cnf文件(参考***)
    2 启动mysql master服务
    3 在master上设置复制用户及密码(参考***)。
    4 获取master主机binlog信息(参考***)
    5 在master上释放读锁
    mysql> UNLOCK TABLES;
    6 配置slave从机my.cnf文件(参考***)
    7 启动slave mysqld服务
    8 在slave从机上执行change master操作(参考后面***)
    2 已有数据的mysql设置主从复制
    如果master主机中已经存在数据,新加入slave从机进行同步,同步前需要从主机上拿到备份文件,
获取备份文件可使用mysqldump,xtrabackup或直接拷贝原始数据文件等。
    配置的基本方法如下:
    对于master的设置方法不在赘述,可参考*****
    对于master数据文件的备份方法不在赘述,可参考*****
    对于slave从机的操作步骤如下:
    1 更新从机的配置文件(参考***)
    2 将数据导入从机
    2.1 使用mysqldump备份的数据导入
    启动slave mysql数据库
    导入从master获得的备份数据
[root@HA1 data]# mysql < datadump.db
    2.2 使用直接复制原始数据文件备份的数据导入
    解压从master获得的备份数据到salve的data目录
[root@HA1 data]# tar xzvf databack.tar.gz
        我们可能需要设置解压出来文件的权限确保slave能够读取或更改它们。
    启动slave mysql数据库
    3 在slave从机上执行change master操作(参考后面***)
    4 在slave从机上启动复制线程
mysql> START SLAVE;
    完成上述操作之后slave便可以连接到master并同步数据了。
相关命令列表:
1
2
3
****************************************************************************************
    原文地址:http://blog.csdn.net/jesseyoung/article/details/41894521
    博客主页:http://blog.csdn.net/jesseyoung
****************************************************************************************

以上就介绍了mysql主从复制-mysql5.6配置主从复制,包括了方面的内容,希望对MySql有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_98979.html

相关图片

相关文章