Welcome 微信登录

首页 / 数据库 / MySQL / MySQL5.6 Replication主从复制(读写分离) 配置完整版

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.101MySQL软件版本:MySQL-server-advanced-5.6.18-1.el6.x86_64.rpmMySQL-cient-advanced-5.6.18-1.el6.x86_64.rpm第二步:在主服务器和从服务器上安装MySQL数据库软件安装方法,请参见 RedHat6.5下MySQL5.6集群配置完整版  http://www.linuxidc.com/Linux/2014-06/103748.htm 
MySQL数据库软件安装完成后,不要急着做mysql启动操作。建议把mysql初始化生成的/usr/my.cnf(如果是从源文件编译安装时,路径应该是在/usr/local/mysql/mysql.cnf)删除,然后把优化好的mysql配置文件my.cnf放到/etc下。 第三步:修改主数据库的配置文件/usr/my.cnf [mysqld] server-id=1log-bin=mysqlmaster-bin.logsync_binlog=1 
innodb_buffer_pool_size=512Minnodb_flush_log_at_trx_commit=1 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
lower_case_table_names=1log_bin_trust_function_creators=1 
第四步:修改从数据库配置文件/usr/my.cnf 
server-id=2log-bin=mysqlslave-bin.logsync_binlog=1innodb_buffer_pool_size=512Minnodb_flush_log_at_trx_commit=1 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESlower_case_table_names=1log_bin_trust_function_creators=1 
第五步:在主数据库和从数据库服务器上分别执行以下命令重新启动主数据库和从数据库[root@master ~]# service mysql restart[root@slave ~]# service mysql restart 
第六步:在主数据库上创建用于主从复制的账户[root@master ~]# mysql -uroot -pmysql> GRANT REPLICATION SLAVE ON *.* TO "repl"@"192.168.1.101" IDENTIFIED BY "111111";Query OK, 0 rows affected (0.00 sec) 
注意:以上命令中的IP地址,是从数据库服务器的IP地址。 --------------------------------------分割线 --------------------------------------Ubuntu 14.04下安装MySQL http://www.linuxidc.com/Linux/2014-05/102366.htm《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF http://www.linuxidc.com/Linux/2014-03/98821.htmUbuntu 14.04 LTS 安装 LNMP NginxPHP5 (PHP-FPM)MySQL http://www.linuxidc.com/Linux/2014-05/102351.htmUbuntu 14.04下搭建MySQL主从服务器 http://www.linuxidc.com/Linux/2014-05/101599.htmUbuntu 12.04 LTS 构建高可用分布式 MySQL 集群 http://www.linuxidc.com/Linux/2013-11/93019.htmUbuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb http://www.linuxidc.com/Linux/2013-08/89270.htm--------------------------------------分割线 --------------------------------------
第七步:主数据库锁表(禁止再插入数据以获取主数据库的的二进制日志坐标)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)第九步:创建主数据库的快照文件[root@master ~]# cd /usr/bin/# ./mysqldump -uroot -p -h127.0.0.1 -P3306 --all-databases --triggers --routines --events >>/mnt/windows/all.sql上面命令中的红色部分,是一个共享目录,这个目录可以同时被主数据库服务器和从数据库服务器访问到。如果没有这样的共享目录,可以将all.sql放在其它任何目录下,然后使用scp命令复制到远程从数据库服务器的某个目录中这条命令的执行时间根据数据量的不同,会有所不同,如果主数据库的数据量很大,可能需要很长时间,那么在这种情况下,就最好在晚上没有业务的时候进行这个操作,否则第七步中的锁表操作会对业务系统造成很大的影响第十步:解锁主数据库的锁表操作[root@master ~]# mysql -uroot -p    (本命令在主数据库服务器上执行)mysql> unlock tables;Query OK, 0 rows affected (0.00 sec)第十一步:在从数据库服务器上导入第七步创建的快照文件到从数据库中[root@slave ~]# mysql -uroot -p -h127.0.0.1 -P3306 < /mnt/windows/all.sql第十二步:在从数据库服务器上设置主数据库服务器向从数据库服务器同步[root@slave ~]# mysql -uroot -pmysql> change master to master_host = "192.168.1.100",master_user="repl",master_password="111111",master_log_file="mysqlmaster-bin.000004",master_log_pos=327;注意:红色部分的值,是在第八步中查出来的,这里不能弄错了第十三步:启动从数据库复制线程mysql> start slave;Query OK, 0 rows affected (0.01 sec)第十四步:查询从数据库的复制线程状态mysql> show slave status G*************************** 1. row ***************************              Slave_IO_State: Waiting for master to send event                  Master_Host: 192.168.1.100                  Master_User: repl                  Master_Port: 3306                Connect_Retry: 60              Master_Log_File: mysqlmaster-bin.000004          Read_Master_Log_Pos: 327              Relay_Log_File: slave-relay-bin.000002                Relay_Log_Pos: 289        Relay_Master_Log_File: mysqlmaster-bin.000004          Slave_IO_Running: Yes        Slave_SQL_Running: Yes              Replicate_Do_DB:          Replicate_Ignore_DB:          Replicate_Do_Table:      Replicate_Ignore_Table:      Replicate_Wild_Do_Table:  Replicate_Wild_Ignore_Table:                  Last_Errno: 0                  Last_Error:                Skip_Counter: 0          Exec_Master_Log_Pos: 327              Relay_Log_Space: 462              Until_Condition: None              Until_Log_File:                Until_Log_Pos: 0          Master_SSL_Allowed: No          Master_SSL_CA_File:          Master_SSL_CA_Path:              Master_SSL_Cert:            Master_SSL_Cipher:              Master_SSL_Key:        Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No                Last_IO_Errno: 0                Last_IO_Error:              Last_SQL_Errno: 0              Last_SQL_Error:  Replicate_Ignore_Server_Ids:            Master_Server_Id: 1                  Master_UUID: 2e5e1b22-f0a9-11e3-bbac-000c297799e0            Master_Info_File: /var/lib/mysql/master.info                    SQL_Delay: 0          SQL_Remaining_Delay: NULL      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it          Master_Retry_Count: 86400                  Master_Bind:      Last_IO_Error_Timestamp:    Last_SQL_Error_Timestamp:              Master_SSL_Crl:          Master_SSL_Crlpath:          Retrieved_Gtid_Set:            Executed_Gtid_Set:                Auto_Position: 01 row in set (0.00 sec) 如果Slave_IO_Running和Slave_SQL_Running两项都为yes,就表示主从复制配置成功了.下面可以开始测试配置是否成功了,首先在主数据库的test数据库中新建一张表,然后插入几条数据,然后到从数据库看看是否同步过来了。注意:当从数据库有大量的查询时,可以暂时将从数据库的复制线程关闭掉,等查询量降下来了,再打开,这样也不会丢失数据。更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-06/103752p2.htm
  • 1
  • 2
  • 下一页
Redhat6.5下MySQL5.6集群配置完整版Oracle Undo tablespace恢复(无备份)相关资讯      MySQL主从复制  MySQL读写分离 
  • CentOS搭建MySQL主从复制,读写分  (今 07:44)
  • MySQL主从复制原理应用基础  (08月27日)
  • MySQL主从复制 实践  (08月22日)
  • MySQL主从复制出现1205错误  (08月31日)
  • MySQL 主从复制原理  (08月22日)
  • 使用XtraBackup进行MySQL不锁表主  (08月09日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数