#####################################Mysql复制的作用和原理mysql-5.5实现主从复制mysql-5.6主从复制和Mysql_Proxy的实现mysql-5.6基于amoeba实现读写分离####
#####################################
Mysql复制的作用和原理
mysql-5.5实现主从复制
mysql-5.6主从复制和Mysql_Proxy的实现
mysql-5.6基于amoeba实现读写分离
#####################################
Mysql复制的作用和原理
复制的作用
复制原理
复制流程如下:
relaylog(中继日志)
mysql-5.5实现主从复制
结构图如下:
安装mysql
mkdir -pv /mydata/datauseradd -r mysqlchown -R mysql.mysql /mydata/datatar xf mysql-5.5.28-linux2.6-i686.tar.gz -C /usr/localcd /usr/local/ln -sv mysql-5.5.28-linux2.6-i686 mysqlcd mysqlchown -R root.mysql ./*scripts/mysql_install_db –user=mysql –datadir=/mydata/data/cp support-files/my-large.cnf /etc/my.cnfcp support-files/mysql.server /etc/rc.d/init.d/mysqldchkconfig –add mysqldvim /etc/profile.d/mysql.shexport PATH=$PATH:/usr/local/mysql/bin. /etc/profile.d/mysql.sh
Master配置
#####修改配置文件 vim /etc/my.cnfdatadir = /mydata/datalog-bin=master-binlog-bin-index=master-bin.indexinnodb_file_per_table = 1binlog_format=mixedserver-id= 1sync_binlog = 1innodb_flush_logs_at_trx_commit = 1#####开启Slave权限用户mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repluser’@’192.168.1.%’ IDENTIFIED BY ‘replpass’;Query OK, 0 rows affected (0.00 sec)mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)
Slave配置
#####修改配置文件vim /etc/my.cnfdatadir = /mydata/datarelay-log = relay-logrelay-log-index = relay-log.indexread-only = ONserver-id= 11skip_slave_start = 1read_only = 1#####查看主日志文件和事件本文来源gaodaimacom搞#代%码@网-位置mysql> show master status;+——————-+———-+————–+——————+| File| Position | Binlog_Do_DB | Binlog_Ignore_DB |+——————-+———-+————–+——————+| master-bin.000001 |340 |||+——————-+———-+————–+——————+#####开启slave复制功能mysql> CHANGE MASTER TO MASTER_HOST=’192.168.1.131′,MASTER_USER=’repluser’, MASTER_PASSWORD=’replpass’,MASTER_LOG_FILE=’master-bin.000001′,MASTER_LOG_POS=340;#####查看slave状态,可得出master二进制日志和slave中继日志的事件和位置对应未必同意所以在slave备份的时候应该记录主服务器的二进制日志,只有二进制日志才可以完成即使点还原Slave_IO_Running: NoSlave_SQL_Running: No均为yes代表slave复制正常#####查看复制状态mysql> show slave status\G*************************** 1. row ***************************Slave_IO_State:Master_Host: 192.168.1.131Master_User: repluserMaster_Port: 3306Connect_Retry: 60Master_Log_File: master-bin.000001Read_Master_Log_Pos: 340Relay_Log_File: relay-log.000001Relay_Log_Pos: 4Relay_Master_Log_File: master-bin.000001Slave_IO_Running: NoSlave_SQL_Running: NoReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 340 #重放到的位置Relay_Log_Space: 107Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: NULLMaster_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error: Replicate_Ignore_Server_Ids:Master_Server_Id: 0#####开启复制进程mysql> START SLAVE;
测试
#####Mastermysql> create database soulboy;Query OK, 1 row affected (0.00 sec)#####Slavemysql> show databases;+——————–+| Database|+——————–+| information_schema || mysql|| performance_schema || soulboy|| test|+——————–+5 rows in set (0.00 sec)
mysql-5.6主从复制和Mysql_Proxy的实现
复制功能的改进
支持多线程复制,事实上是针对每个database开启相应的独立线程。即每个库有一个单独的(sql thread)如果线上业务中,只有一个database或者绝大多数压力集中在个别database的话,多线程并发复制特性就没有意义了。
支持启用GTID,对运维人员来说应该是一件令人高兴的事情,在配置主从复制,传统的方式里,你需要找到binlog和POS点,然后change master to指向,而不是很有经验的运维,往往会将其找错,造成主从同步复制报错,在mysql5.6里,无须再知道binlog和POS点,需要知道master的IP、端口,账号密码即可,因为同步复制是自动的,mysql通过内部机制GTID自动找点同步。
结构图如下:
Mysql-5.6主从复制功能的实现步骤
Master配置(安装步骤省略)