- 一、主從復制的原理
-
二、搭建主從復制(一主一從)
- 1、兩臺主機安裝MySQL
- 2、修改配置文件
- 3、創(chuàng)建主從復制用戶
- 4、主從庫重啟并驗證server_id
- 5、配置從庫與主庫的復制關系
- 6、驗證主從復制
一、主從復制的原理
- master服務器將數(shù)據(jù)的改變記錄二進制日志,當master上的數(shù)據(jù)發(fā)生改變時,則將其改變寫入二進制日志中;
- salve服務器會在一定時間間隔內(nèi)對master二進制日志進行探測其是否發(fā)生改變,如果發(fā)生改變,則開始一個I/OThread請求master二進制事件;
- 同時主節(jié)點為每個I/O線程啟動一個dump線程,用于向其發(fā)送二進制事件,并保存至從節(jié)點本地的中繼日志中;
- 從節(jié)點將啟動SQL線程從中繼日志中讀取二進制日志,在本地重放,使得其數(shù)據(jù)和主節(jié)點的保持一致;
- 最后I/OThread和SQLThread將進入睡眠狀態(tài),等待下一次被喚醒。
二、搭建主從復制(一主一從)
涉及主機:
主機名 | IP地址 |
---|---|
db01(master) | 192.168.112.40 |
db02(slave) | 192.168.112.50 |
1、兩臺主機安裝MySQL
#二進制安裝
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
tar xzvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
mkdir /application
mv mysql-5.6.40-linux-glibc2.12-x86_64 /application/mysql-5.6.40
ln -s /application/mysql-5.6.40/ /application/mysql
cd /application/mysql/support-files/
\cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
cd /application/mysql/scripts
useradd mysql -s /sbin/nologin -M
yum -y install autoconf
cd /application/mysql/scripts/
./mysql_install_db --user=mysql --basedir=/application/mysql --data=/application/mysql/data
echo 'export PATH="/application/mysql/bin:$PATH"' >> /etc/profile.d/mysql.sh
source /etc/profile
sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe
#指定MySQL安裝根目錄以及數(shù)據(jù)目錄
vim /etc/my.cnf
basedir = /application/mysql/
datadir = /application/mysql/data
#設置密碼
mysqladmin -uroot password '123'
2、修改配置文件
vim /etc/my.cnf
#主庫
server_id=1
log_bin=mysql-bin
binlog_format=row
#從庫
server_id=2
3、創(chuàng)建主從復制用戶
#登錄數(shù)據(jù)庫
[root@db01 ~]# mysql -uroot -p123
#創(chuàng)建slave用戶
mysql> grant replication slave on *.* to slave@'192.168.112.%' identified by '123';
Query OK, 0 rows affected (0.00 sec)
4、主從庫重啟并驗證server_id
主從庫重啟
/etc/init.d/mysqld restart
#遇到重啟失敗
[root@db02 ~]# /etc/init.d/mysqld restart
ERROR! MySQL server PID file could not be found!
Starting MySQL.Logging to '/application/mysql/data/db02.err'.
...........^C
[root@db02 ~]#
[root@db02 ~]# mysqladmin -uroot -p123 shutdown
Warning: Using a password on the command line interface can be insecure.
[root@db02 ~]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
驗證server_id
mysql> show variables like "server_id";
驗證主庫的binlog是否開啟
mysql> show variables like "%bin%";
5、配置從庫與主庫的復制關系
#從庫
change master to
master_host='192.168.112.40',
master_user='slave',
master_password='123',
master_log_file='mysql-bin.000001',
master_log_pos=120;
start slave;
show slave status\G;
主庫使用show master status;
查看master_log_file和master_log_pos
6、驗證主從復制
目前兩個數(shù)據(jù)庫數(shù)據(jù)是一致的
主庫創(chuàng)建t1表并插入數(shù)據(jù)
可以看到從庫也同步復制了主庫更新的數(shù)據(jù)
文章來源:http://www.zghlxwxcb.cn/news/detail-844294.html
至此主從復制配置完成文章來源地址http://www.zghlxwxcb.cn/news/detail-844294.html
到了這里,關于MySQL主從復制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!