為測試主從備份效果使用CentOS7系統(tǒng)鏡像的VM直接安裝mysql以下為實操記錄
CentOS7 VM使用:http://www.itdecent.cn/p/cecf6cc04f46
一、安裝mysql數(shù)據(jù)庫
參考:http://www.itdecent.cn/p/276d59cbc529
1.創(chuàng)建mysql用戶和用戶組
groupadd mysql #添加用戶組
useradd -r -g mysql mysql #添加用戶
2.下載安裝包
cd /data
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
3.解壓安裝包
tar -tzvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql #修改文件名
mkdir /data/mysql/data #創(chuàng)建data目錄
4.修改安裝目錄所屬用戶組及權(quán)限
chown -R mysql:mysql /data/mysql
chmod -R 755 /data/mysql
5.安裝并初始化
cd /data/mysql/bin
./mysqld --initialize --user=mysql --datadir=/data/mysql/data --basedir=/data/mysql
錯誤提示:
./mysqld: error while loading shared libraries:libaio.so.l:connot poen shared object file:No such file or directory
解決方案:
yum install libaio-devel.x86_64 #缺少必要的數(shù)據(jù)庫依賴,安裝一下
[Tip]注意初始化日志結(jié)尾的隨機(jī)初始密碼 首次登陸需要用到 忘了也沒事在下一步配置文件中添加skip-grant-tables 可以跳過密碼驗證(別問我怎么知道的-_-)
6.修改mysql配置文件
vi /etc/my.cnf
原有內(nèi)容不知道干啥用的我全刪了,替換成新的保存
[mysqld]
datadir=/data/mysql/data
basedir=/data/mysql
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
lower_case_table_names=1
7.啟動
ln -s /data/mysql/support-files/mysql.server /etc/init.d/mysql #添加軟連接
service mysql start
ps -ef|grep mysql #不出意外應(yīng)該顯示mysql進(jìn)程了
mysql>mysql -uroot #登錄mysql 如果添加了跳過驗證就不需要輸入密碼了 不然加上(-p上述的初始密碼)
mysql>use mysql; #選擇mysql數(shù)據(jù)庫
mysql>update user set host='%' ,authentication_string = password("123456") where user='root'; #開啟遠(yuǎn)程連接并修改密碼
mysql>flush privileges; #刷新配置進(jìn)內(nèi)存 否則需要重啟起效
如果防火墻沒有禁止3306端口的話現(xiàn)在應(yīng)該可以用圖形化管理工具遠(yuǎn)程登錄數(shù)據(jù)庫了
二、克隆虛擬機(jī)鏡像
參考:https://jingyan.baidu.com/article/da1091fb4d625b027849d684.html
使用VM進(jìn)行虛擬機(jī)克隆作為mysql備份數(shù)據(jù)庫服務(wù)器,步驟簡單參考上方百度百科。
三、進(jìn)行主從配置
參考:https://www.cnblogs.com/jianmingyuan/p/10903682.html
測試環(huán)境:
A服務(wù)器(主服務(wù)器Master):192.168.216.127
B服務(wù)器(從服務(wù)器Slave):192.168.216.128
主從服務(wù)器的Mysql版本皆為5.5.24
[Tip]主從庫都創(chuàng)建數(shù)據(jù)庫test并創(chuàng)建一個用于測試的數(shù)據(jù)表,節(jié)省掉備份步驟。
1.主庫開啟二進(jìn)制備份功能
1.1添加my.cnf配置內(nèi)容并重啟mysql
server-id = 1 //唯一id
log-bin=mysql-bin //其中這兩行是本來就有的,可以不用動,添加下面兩行即可.指定日志文件
binlog-do-db = test //記錄日志的數(shù)據(jù)庫
binlog-ignore-db = mysql //不記錄日志的數(shù)據(jù)庫
1.2查詢主庫狀態(tài)并記錄 日志文件file,和當(dāng)前位置position

2.主庫增加同步賬號,并開放repliction權(quán)限
mysql>grant replication slave on *.* to 'replicate'@'192.168.216.128' identified by '123456'; #創(chuàng)建同步用戶replicate
mysql>flush privileges;
4.從庫設(shè)置主從同步
4.1添加my.cnf配置內(nèi)容并重啟mysql
server-id = 2
log-bin=mysql-bin
binlog_format = mixed #binlog日志格式,mysql默認(rèn)采用statement,建議使用mixed
expire_logs_days = 30 #binlog過期清理時間
max_binlog_size = 1000m #binlog每個日志文件大小
binlog_cache_size = 4m #binlog緩存大小
max_binlog_cache_size= 512m #最大binlog緩存大
replicate-do-db = test
replicate-ignore-db = mysql,information_schema,performance_schema
4.2用change mster 語句指定同步位置
mysql>stop slave; //先停止slave服務(wù)線程,這個是很重要的,如果不這樣做會造成以下操作不成功。
mysql>change master to
>master_host='192.168.216.127',master_user='replicate',master_password='123456',
>master_log_file=' mysql-bin.000003 ',master_log_pos=154;
mysql>start slave;
4.3查詢從庫狀態(tài)

如果Slave_IO_Running=Yes 且 Slave_SQL_Running=Yes則表示主從同步配置成功
若Slave_IO_Running=No 下面Last_IO_Error提示UUID沖突則是因為鏡像拷貝導(dǎo)致的UUID重復(fù)
解決方案:
cd /data/mysql/data
rm -rf auto.cnf