MySQL多主一從同步 mysql
實驗準備:主機A和主機B做爲主,其IP地址分別爲192.168.131.129和192.168.131.130,主機C做爲從服務器,在從服務器上面配置MySQL多實例,其IP地址爲192.168.131.136,三臺服務器均關閉防火牆和SELINUX,MySQL版本爲5.6.26,爲通用二進制包 linux
# tar xf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz sql
# mv mysql-5.6.26-linux-glibc2.5-x86_64 /usr/local/mysql 數據庫
# useradd -M -s /sbin/nologin mysql vim
# chown -R root:root /usr/local/mysql/* 安全
# chown -R mysql:mysql /usr/local/mysql/data/ 服務器
# yum -y install libaio socket
# cd /usr/local/mysql/scripts/ 測試
# ./mysql_install_db --datadir=/usr/local/mysql/data/ --user=mysql --basedir=/usr/local/mysql/ spa
# 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
# mysqld_multi --defaults-file=/etc/my.cnf start 130
注:爲了安全應該給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實例。