CentOS 下 MySQL5.6 配置主主同步

May 05, 2015

主主同步介绍

保持两个数据库的状态自动同步,对任何一个数据库的操作都自动应用到另外一个数据库 这样做的好处:

  1. 可以做灾备,其中一个坏了可以切换到另一个。
  2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量。

软件下载地址

http://www.cmake.org/files/v3.2/cmake-3.2.1.tar.gz http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.23.tar.gz

安装两台MySQL

安装cmake
$ tar zxf cmake-3.2.1.tar.gz #解压
$ cd cmake-3.2.1 #进入cmake目录
$ ./configure --prefix=/usr/local/cmake && make && make install #配置&编译&安装
$ ln -s /usr/local/cmake/bin/* /usr/bin/ #链接cmake的可执行文件到系统中
安装mysql
$ yum -y install ncurses-devel perl-Module-Install.noarch #用yum安装mysql依赖包
$ useradd -M -s /sbin/nologin mysql #添加mysql用户
$ mkdir -p /usr/local/mysql/data #创建mysql的数据存储目录
$ tar zxf mysql-5.6.23.tar.gz #解压
$ cd mysql-5.6.23.tar.gz #进入mysql目录
$ cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci #配置
$ make && make install #编译&安装
$ rm -f /etc/my.cnf #删除原有的配置文件
$ cp support-files/my-default.cnf /etc/my.cnf #复制新的mysql配置文件到etc下
$ cp support-files/mysql.server /etc/init.d/mysqld #复制mysql的服务启动脚本到系统中
$ chmod 755 /etc/init.d/mysqld #赋予脚本执行权限
$ chkconfig --add mysqld #添加mysqld服务到chkconfig
$ chkconfig mysqld on #设置开机启动
$ chown -R :mysql /usr/local/mysql/ #设置mysql目录的权限
$ chown -R mysql /usr/local/mysql/data/
$ ln -s /usr/local/mysql/bin/* /usr/local/bin/ #链接mysql的相关文件到系统中
$ ln -s /usr/local/mysql/lib/* /usr/lib/
$ ln -s /usr/local/mysql/include/mysql/* /usr/include/
$ cd /usr/local/mysql/scripts #进入mysql脚本的目录
$ ./mysql_install_db \
$ --user=mysql \
$ --basedir=/usr/local/mysql \
$ --datadir=/usr/local/mysql/data #初始化数据库
$ service mysqld start #启动mysql服务
$ mysqladmin -uroot password 123.com #设置mysql的root密码为123.com

配置第一台MySQL

$ vi /etc/my.cnf
[mysqld]
log-bin=/usr/local/mysql/bin.log
server-id=1
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
replicate-ignore-db=mysql
$ mysql -uroot -p
mysql> grant replication slave on *.* to 'sync'@'1.1.1.2' identified by 'sync';
mysql> change master to master_host='1.1.1.2',master_user='sync',master_password='sync';

配置第二台MySQL

$ vi /etc/my.cnf
[mysqld]
log-bin=/usr/local/mysql/bin.log
server-id=2
log-slave-updates
slave-skip-errors=all
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2
replicate-ignore-db=mysql
$ mysql -uroot -p
mysql> grant replication slave on *.* to 'sync'@'1.1.1.1' identified by 'sync';
mysql> change master to master_host='1.1.1.1',master_user='sync',master_password='sync';

用下面的命令查看slave状态

show slave status\G

© 2021 by Henry.