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…