半同步简介:
在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。异步复制可以提供最佳的性能,因为主服务器在将更新的数据写入它的二进制日志(Binlog)文件中后,无需等待验证更新数据是否已经复制到从服务器中,就可以自由处理其它进入的事务处理请求。但这也同时带来了很高的风险,如果在主服务器或从服务器端发生故障,会造成主从数据的不一致,甚至在恢复时造成数据丢失。
从MySQL5.5开始引入了一种半同步复制功能,该功能可以确保主服务器和访问链中至少一台从服务器之间的数据一致性和冗余。在这种配置结构中,一台主服务器和其许多从服务器都进行了配置,这样在复制拓扑中,至少有一台从服务器在父主服务器进行事务处理前,必须确认更新已经收到并写入了其中继日志(Relay Log)。当出现超时,源主服务器必须暂时切换到异步复制模式重新复制,直到至少有一台设置为半同步复制模式的从服务器及时收到信息。
继5.5半同步复制后,MySQL5.6又对其进行了优化和改进,其中有两个地方较为重要:
1、在主从切换后,在传统的方式里,需要找到binlog和POS点,然后更改master指向,而在mysql5.6里,你无须再知道binlog和POS点,你只需要知道master的IP、端口,账号密码即可,因为同步复制是自动的,mysql通过内部机制GTID自动找点同步。
2、多线程复制,以前的版本,同步复制是单线程的,只能一个一个执行,在MySQL5.6里,可以做到多个库之间的多线程复制,但一个库里的表,多线程复制是无效的。
--------------------------------------分割线 --------------------------------------
--------------------------------------分割线 --------------------------------------
一、试验环境准备
1.1、安装平台:vmware workstation 10
操作系统:CentOS release 6.6 (Final) x86_64,最小化安装。
MySQL版本:mysql-5.6.24-linux-glibc2.5-x86_64
关闭防火墙
1.2、服务器IP地址规划:
MySQL Master:192.168.1.152
MySQL Slave1:192.168.1.201
MySQL Slave2:192.168.1.202
1.3、实验拓扑:
二、安装Mysql5.6
2.1、由于是最小化安装的系统,需要安装一些基本的组建
# yum -y groupinstall "Perl Support"
# yum -y instdall vim wget
# cd /usr/local/src
# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz
2.2、新建用户和数据目录。
# mkdir -pv /mydata/data
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
# chown -R mysql:mysql /mydata/data
2.3、安装并初始化mysql
# tar zxvf mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mysql-5.6.24-linux-glibc2.5-x86_64 mysql
# cd mysql
# chown -R mysql:mysql .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# chown -R root .
2.4、为mysql提供主配置文件
12 # cd /usr/local/mysql
# cp support-files/my-default.cnf /etc/my.cnf
2.5、为mysql配置sysv服务脚本
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld //添加至服务列表
# chkconfig mysqld on
为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
2.6、输出mysql的man手册至man命令的查找路径。
编辑/etc/man.config,添加如下行即可
MANPATH /usr/local/mysql/man
2.7、输出mysql的头文件至系统头文件路径/usr/include
这可以通过简单的创建链接实现
# ln -sv /usr/local/mysql/include /usr/include/mysql
2.8、输出mysql的库文件给系统库查找路径。
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
# ldconfig //让系统重新载入系统库
2.9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
# echo "export PATH=$PATH:/usr/local/mysql/bin " >/etc/profile.d/mysql.sh
# source /etc/profile.d/mysql.sh
以上安装过程在三台服务器军需执行。