MySQL多主一從同步
實驗准備:主機A和主機B作為主,其IP地址分別為192.168.131.129和192.168.131.130,主機C作為從服務器,在從服務器上面配置MySQL多實例,其IP地址為192.168.131.136,三台服務器均關閉防火牆和SELINUX,MySQL版本為5.6.26,為通用二進制包
-
主機A和主機B主服務器MySQL通用二進制包安裝和初始化
# tar xf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.6.26-linux-glibc2.5-x86_64 /usr/local/mysql
# useradd -M -s /sbin/nologin mysql
# chown -R root:root /usr/local/mysql/*
# chown -R mysql:mysql /usr/local/mysql/data/
# yum -y install libaio
# cd /usr/local/mysql/scripts/
# ./mysql_install_db --datadir=/usr/local/mysql/data/ --user=mysql --basedir=/usr/local/mysql/
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile
# source /etc/profile
# vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# service mysqld start
#chkconfig mysqld on
# ss -tunlp | grep 3306
# mysqladmin -uroot password '123456' #設置數據庫密碼
2、主機A和主機B配置
①主機A
# vim /etc/my.cnf
server-id=129
port=3306
log-bin=mysql-bin
log-bin-index=mysql-bin.index
max-binlog-size=100M
# service mysqld restart
# mysql -uroot –p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'wdd'@'192.168.131.136' IDENTIFIED BY '123456';
mysql> SHOW MASTER STATUS;
②主機B
# vim /etc/my.cnf
server-id=130
port=3306
log-bin=mysql-bin
log-bin-index= mysql-bin.index
max-binlog-size=100M
# service mysqld restart
# mysql -u root –p
mysql> GRANT REPLICATION SLAVE ON *.* TO 'wdd'@'192.168.131.136' IDENTIFIED BY '123456';
mysql> SHOW MASTER STATUS;
3、主機c從服務器安裝MySQL多實例
# yum -y install libaio
# tar xf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.6.26-linux-glibc2.5-x86_64 /usr/local/mysql
# useradd -M -s /sbin/nologin mysql
# mkdir /data/{3306,3307} –pv
# chown -R mysql:mysql /data/
#vim /etc/my.cnf
[mysqld_multi]
mysqld=/usr/local/mysql/bin/mysqld_safe
mysqladmin=/usr/local/mysql/bin/mysqladmin
#user=mysql
#password=123456
log=/data/multi.log
[mysqld129]
port=3306
pid-file=/data/3306/mysql.pid
datadir=/data/3306/data
socket=/data/3306/mysql.sock
server-id=136
user=mysql
[mysqld130]
port=3307
pid-file=/data/3307/mysql.pid
datadir=/data/3307/data
socket=/data/3307/mysql.sock
server-id=136
user=mysql
- # /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/3306/data --basedir=/usr/local/mysql/
- # /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/3307/data --basedir=/usr/local/mysql/
-
# mysqld_multi --defaults-file=/etc/my.cnf start 129
# mysqld_multi --defaults-file=/etc/my.cnf start 130
- # mysqld_multi --defaults-extra-file=/etc/my.cnf report
-
# ss -tunlp | grep 330
注:為了安全應該給MySQL實例設置密碼,命令如下
# mysqladmin -uroot -S /data/3306/mysql.sock password '123456'
# mysqladmin -uroot -S /data/3307/mysql.sock password '123456'
4.主機c多實例試驗操作
①# mysql -uroot -S /data/3306/mysql.sock
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.131.129',
MASTER_USER='wdd',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=120;
mysql> START SLAVE;
mysql>SHOW SLAVE STATUS;
②# mysql -u root -S /data/3307/mysql.sock
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.131.130',
MASTER_USER='wdd',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=331;
mysql> START SLAVE;
mysql>SHOW SLAVE STATUS;
5、測試
①登錄主機A
mysql> create database wdd;
mysql> SHOW DATABASES;
②登錄主機B
mysql> create database info;
mysql> show databases;
③查看MySQL實例,實例129和130
實例129
# mysql -uroot -S /data/3306/mysql.sock
mysql> START SLAVE;
實例130
# mysql -u root -S /data/3307/mysql.sock
mysql> show databases;
注:MySQL多實例登錄時,其實不需要指定端口,也就是說可以省略-p選項,即使使用-p選項,端口也可以隨意指定,也就是說可以隨便寫一個端口號,只要套接字不變,那么登錄的還是同一個MySQL實例。