MySQL5.6主从复制(读写分离)教程
1、MySQL5.6开始主从复制有两种方式:
基于日志(binlog);
基于GTID(全局事务标示符)。
需要注意的是:GTID方式不支持临时表!所以如果你的业务系统要用到临时表的话就不要考虑这种方式,
至少目前最新版本MySQL5.6.12的GTID复制还是不支持临时表的。
所以本教程主要是告诉大家如何通过日志(binlog)方式做主从复制!
2、MySQL官方提供的MySQL Replication教程:
http://dev.mysql.com/doc/refman/5.6/en/replication.html
第一步:准备工作
主服务器: 192.168.1.100
从服务器: 192.168.1.101
MySQL软件版本:
MySQL-server-advanced-5.6.18-1.el6.x86_64.rpm
MySQL-cient-advanced-5.6.18-1.el6.x86_64.rpm
第二步:在主服务器和从服务器上安装MySQL数据库软件
安装方法,请参见
MySQL5.6.18 for RHEL/OralceLinux 6.5 安装
MySQL数据库软件安装完成后,不要急着做mysql启动操作。建议把mysql初始化生成的/usr/my.cnf
(如果是从源文件编译安装时,路径应该是在/usr/local/mysql/mysql.cnf)删除,然后把优化好的mysql
配置文件my.cnf放到/etc下。
第三步:修改主数据库的配置文件/usr/my.cnf
[mysqld]
server-id=1
log-bin=mysqlmaster-bin.log
sync_binlog=1
innodb_buffer_pool_size=512M
innodb_flush_log_at_trx_commit=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
lower_case_table_names=1
log_bin_trust_function_creators=1
第四步:修改从数据库配置文件/usr/my.cnf
server-id=2
log-bin=mysqlslave-bin.log
sync_binlog=1
innodb_buffer_pool_size=512M
innodb_flush_log_at_trx_commit=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
lower_case_table_names=1
log_bin_trust_function_creators=1
第五步:在主数据库和从数据库服务器上分别执行以下命令重新启动主数据库和从数据库
[root@master ~]# service mysql restart
[root@slave ~]# service mysql restart
第六步:在主数据库上创建用于主从复制的账户
[root@master ~]# mysql -uroot -p
mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl’@’192.168.1.101’ IDENTIFIED BY ‘111111’;
Query OK, 0 rows affected (0.00 sec)
注意:以上命令中的IP地址,是从数据库服务器的IP地址。
第七步:主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标)
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
第八步:查看主数据库的状态(并记录下File字段和Position字段的值,在配置从服务器时有用到)
mysql> show master status;
+————————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+————————+———-+————–+——————+——————-+
| mysqlmaster-bin.000004 | 327 | | | |
+————————+———-+————–+——————+——————-+
1 row in set (0.00 sec)
以下文章点击率最高
Loading…