下文主要給大家?guī)?lái)MySQL主從配置詳細(xì)步驟,希望這些內(nèi)容能夠帶給大家實(shí)際用處,這也是我編輯Mysql主從配置詳細(xì)步驟這篇文章的主要目的。好了,廢話(huà)不多說(shuō),大家直接看下文吧。
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到六安網(wǎng)站設(shè)計(jì)與六安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋六安地區(qū)。
環(huán)境:
系統(tǒng)版本:centos6.6
mysql版本:mysql 5.6.11
ip | 狀態(tài) |
10.0.2.87 | 主 |
10.0.2.111 | 從 |
1. 數(shù)據(jù)備份
在10.0.2.87上
先停掉服務(wù),使數(shù)據(jù)庫(kù)停止數(shù)據(jù)更新,然后備份數(shù)據(jù)庫(kù)
mysqldump -R -uroot -p nc_onldb > /root/nc_onldb_`date +%Y%m%d`.sql mysqldump -R -uroot -p rxrc > /root/rxrc_`date +%Y%m%d`.sql
如果數(shù)據(jù)較大,可以考慮直接拷貝庫(kù)文件
2. 安裝mysql 5.6
從庫(kù)mysql版本與主庫(kù)不一致,重新安裝。
首先停掉原有的mysql:
/etc/init.d/mysqld stop
1. 從10.0.2.87拷貝mysql安裝包
cd /usr/local/src/ scp root@10.0.2.87:/home/nc_onldb/mysql-5.6.11.tar.gz ./
2. 解壓
tar xzf mysql-5.6.11.tar.gz cd mysql-5.6.11
3. 安裝cmake
yum install cmake
4. 安裝mysql
groupadd db useradd nc_onldb -g db
cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_DATADIR=/home/nc_onldb/DATA \ -DMYSQL_USER=nc_onldb \ -DMYSQL_TCP_PORT=3306
可能會(huì)出現(xiàn)的錯(cuò)誤:
1. -- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:82 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
====安裝 ncurses-devel,然后刪除CMakeCache.txt,重新編譯即可
yum install ncurses-devel rm -f CMakeCache.txt
2. CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Performing Test HAVE_PEERCRED - Failed
====缺少gcc相關(guān)的包,然后刪除CMakeCache.txt,重新編譯
yum install gcc gcc-c++ rm -f CMakeCache.txt
make && make install
5. 初始化數(shù)據(jù)庫(kù)
/usr/local/mysql/scripts/mysql_install_db --user=nc_onldb --basedir=/usr/local/mysql --datadir=/home/nc_onldb/DATA --pid-file=/var/run/mysqld/mysqld.pid
初始化時(shí)可能會(huì)出現(xiàn)錯(cuò)誤:
/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13 - Permission denied)
2016-10-19 15:06:48 30553 [ERROR] Aborting
2016-10-19 15:06:48 30553 [Note] Binlog end
2016-10-19 15:06:48 30553 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
====先將原有的mysql服務(wù)停掉再進(jìn)行初始化。
6. 復(fù)制服務(wù)啟動(dòng)腳本
由于有老版本的mysql啟動(dòng)腳本,復(fù)制到/etc/init.d時(shí)需注意區(qū)分
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
7. 修改配置文件
mv /etc/my.cnf /etc/my.cnf.bak vi /usr/local/mysql/my.cnf [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES datadir=/home/nc_onldb/DATA socket=/var/run/mysqld/mysql.sock user=nc_onldb # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
啟動(dòng)mysql
/etc/init.d/mysql start
啟動(dòng)過(guò)程可能報(bào)錯(cuò):
Starting MySQL.. ERROR! The server quit without updating PID file (/home/nc_onldb/DATA/xxx.pid).
====原因可能是配置的pid目錄權(quán)限問(wèn)題,此目錄跟原有mysql的pid目錄一樣,但權(quán)限是原有mysql的用戶(hù),將/var/run/mysqld的所屬用戶(hù)和所屬組改成nc_onldb
chown -R nc_onldb:nc_onldb /var/run/mysqld
3. 設(shè)置mysql主從
1. 配置主(10.0.2.87)
vi /usr/local/mysql/my.cnf 添加如下內(nèi)容: server-id=87 log-bin=mysql-bin
重啟mysql
/etc/init.d/mysql restart
設(shè)置權(quán)限
/usr/local/mysql/bin/mysql -uroot >grant replication slave on *.* to 'repl'@'10.0.2.111' identified by 'aabbcc'; >flush privileges; >flush tables with read lock; #數(shù)據(jù)庫(kù)加讀取鎖 >show master status; #查看主庫(kù)狀態(tài),記住內(nèi)容,配置從時(shí)會(huì)用到
2. 配置從(10.0.2.111)
vi /usr/local/mysql/my.cnf 添加如下內(nèi)容: server-id=111
重啟mysql
/etc/init.d/mysql restart
/usr/local/mysql/bin/mysql -uroot >stop slave; >change master to master_host='10.0.2.87', master_port=3306, master_user='repl', master_password='aabbcc', master_log_file='mysql-bin.xxxx', master_log_pos=xxxx; >start slave;
在10.0.2.87上:
unlock tables;
再到從上看mysql的狀態(tài)
show slave status\G (\G表示以列的形式顯示)
更新主從關(guān)系(bin-log發(fā)生變化):
在從上:
>stop slave; >reset slave; >start slave;
刪除主從關(guān)系:
在從上:
>stop slave; >reset slave all;
4. mysql清理bin-log
(1)自動(dòng)清理方法:編輯my.cnf
expire_logs_days = 7 // 表示日志保留7天,超過(guò)7天則設(shè)置為過(guò)期的
#/usr/local/mysql/bin/mysql -uroot >show binary logs; >show variables like '%log%'; >set global expire_logs_days = 7;
(2)手動(dòng)清理
如果沒(méi)有主從,可以通過(guò)下面命令重置數(shù)據(jù)庫(kù)日志:
>reset master;
如果有主從復(fù)制,應(yīng)通過(guò)purge命令來(lái)清理:
/usr/local/mysql/bin/mysql -uroot >purge master logs to 'mysql-bin.010'; //清除mysql-bin.010日志以前的(不包括010) >purge master logs before '2016-02-28 13:00:00'; //清除2016-02-28 13:00:00前的日志 >purge master logs before date_sub(now(), interval 3 day); //清除3天前的bin日志
注意,不要輕易手動(dòng)去刪除binlog,會(huì)導(dǎo)致binlog.index和真實(shí)存在的binlog不匹配,而導(dǎo)致expire_logs_day失效。
對(duì)于以上關(guān)于Mysql主從配置詳細(xì)步驟,大家是不是覺(jué)得非常有幫助。如果需要了解更多內(nèi)容,請(qǐng)繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會(huì)喜歡上這些內(nèi)容的。