Mysql主從配置

來源:互聯網
上載者:User

標籤:配置   mysql   主從   

環境:

系統版本:centos6.6

mysql版本:mysql 5.6.11

ip 狀態
10.0.2.87
10.0.2.111


1. 資料備份

在10.0.2.87上

先停掉服務,使資料庫停止資料更新,然後備份資料庫

mysqldump -R -uroot -p nc_onldb > /root/nc_onldb_`date +%Y%m%d`.sqlmysqldump -R -uroot -p rxrc > /root/rxrc_`date +%Y%m%d`.sql

如果資料較大,可以考慮直接拷貝庫檔案


2. 安裝mysql 5.6

從庫mysql版本與主庫不一致,重新安裝。

首先停掉原有的mysql:

/etc/init.d/mysqld stop

1. 從10.0.2.87拷貝mysql安裝包

cd /usr/local/src/scp [email protected]:/home/nc_onldb/mysql-5.6.11.tar.gz ./

2. 解壓

tar xzf mysql-5.6.11.tar.gzcd mysql-5.6.11

3. 安裝cmake

yum install cmake

4. 安裝mysql

groupadd dbuseradd 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

 

可能會出現的錯誤:

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-develrm -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相關的包,然後刪除CMakeCache.txt,重新編譯

yum install gcc gcc-c++rm -f CMakeCache.txt

 

make && make install

5. 初始化資料庫

/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

 

初始化時可能會出現錯誤:

/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服務停掉再進行初始化。

 

6. 複製服務啟動指令碼

由於有老版本的mysql啟動指令碼,複製到/etc/init.d時需注意區分

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

 

7. 修改設定檔

mv /etc/my.cnf /etc/my.cnf.bakvi /usr/local/mysql/my.cnf[mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES datadir=/home/nc_onldb/DATAsocket=/var/run/mysqld/mysql.sockuser=nc_onldb# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0 [mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

啟動mysql

/etc/init.d/mysql start

 

啟動過程可能報錯:

Starting MySQL.. ERROR! The server quit without updating PID file (/home/nc_onldb/DATA/xxx.pid).

====原因可能是配置的pid目錄許可權問題,此目錄跟原有mysql的pid目錄一樣,但許可權是原有mysql的使用者,將/var/run/mysqld的所屬使用者和所屬組改成nc_onldb

chown -R nc_onldb:nc_onldb /var/run/mysqld

3. 設定mysql主從

1. 配置主(10.0.2.87)

vi /usr/local/mysql/my.cnf添加如下內容:server-id=87log-bin=mysql-bin

重啟mysql

/etc/init.d/mysql restart

 

設定許可權

/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;  #資料庫加讀取鎖>show master status; #查看主庫狀態,記住內容,配置從時會用到


2. 配置從(10.0.2.111)

vi /usr/local/mysql/my.cnf添加如下內容: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的狀態

show slave status\G   (\G表示以列的形式顯示)


更新主從關係(bin-log發生變化):

在從上:

>stop slave;>reset slave;>start slave;

刪除主從關係:

在從上:

>stop slave;>reset slave all;

4. mysql清理bin-log

(1)自動清理方法:編輯my.cnf

expire_logs_days = 7 // 表示日誌保留7天,超過7天則設定為到期的
#/usr/local/mysql/bin/mysql -uroot>show binary logs;>show variables like ‘%log%‘;>set global expire_logs_days = 7;


(2)手動清理

如果沒有主從,可以通過下面命令重設資料庫日誌:

>reset master;

如果有主從複製,應通過purge命令來清理:

/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日誌

注意,不要輕易手動去刪除binlog,會導致binlog.index和真實存在的binlog不匹配,而導致expire_logs_day失效。





本文出自 “我不是我” 部落格,請務必保留此出處http://wangwq.blog.51cto.com/8711737/1956819

Mysql主從配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.