mysql從3.23.15版本以後提供數據庫復制功能,而以前,數據庫雙機熱備還僅是大型數據庫的專利,利用該功能可以實現兩個數據庫同步,主從模式,互相備份模式的功能。
概述:
根據項目要求,我們編寫一個基於CentOS平台的MYSQL主從部署手冊。
為了縮減本文檔體積和方便大家部署使用,將不提供操作截圖,只提供需要輸入的命令,方便大家復制粘貼命令行。
Mysql安裝准備:
測試機IP准備::
• 主服務器Master: 192.168.1.136
• 從服務器Slave : 192.168.1.137
測試機yum准備:
Yum地址:http://centos.ustc.edu.cn/centos/(根據網絡狀況選擇適合源地址)
Yum部署:
#cd /etc/yum.repos.d
#mv CentOS-Base.repo CentOS-Base.repo.save
#wget http://centos.ustc.edu.cn/CentOS-Base.repo
#vi /etc/yum.repos.d/CentOS-Base.repo
把[centosplus] 中的 enabled=0 改為enabled=1
安裝包准備:
• Mysql:http://221.1.222.15:82/down/mysql-5.1.55.tar.gz
Mysql主從安裝:
安裝mysql,推薦主從兩台服務器安裝相同版本Mysql
#useradd mysql -s /sbin/nologin
#cd /usr/src
#wget http://221.1.222.15:82/down/mysql-5.1.55.tar.gz
#tar zxvf mysql-5.1.55.tar.gz
#cd mysql-5.1.55
#./configure --prefix=/usr/local/mysql --localstatedir=/opt/data --with-extra-charsets=utf8,gb2312,gbk --with-pthread --enable-thread-safe-client
注:配置過程制定數據庫文件的位置及額外字符集,可以根據情況選擇
#make
#make install
#cp support-files/my-large.cng /etc/my.cnf
#cd /usr/local/mysql
#chgrp –R mysql .
生成基本的庫、表
#/usr/local/mysql/bin/mysql_install_db --user=mysql
確認生成的庫、表,並授權
# cd /opt/data
# pwd
/opt/data
# ll //務必生成相應的庫、表
#chown –R mysql:mysql /opt/data
設置root密碼:
#/usr/local/mysql/bin/mysqladmin –uroot password “q1w2e3r4”
以上操作過程主、從服務器均相同。
Mysql主從配置:
修改配置文件:
主服務器Master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1 //默認是1,保持不變
從服務器Slave
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=2 //默認是1,修改為大於等於2的數字,但不要太離譜的9999….
啟動mysql服務:
#/usr/local/mysql/bin/mysqld_safe –user=mysql& //這個動作主從服務器相同
在主服務器建立帳戶並授權Slave:
#GRANT REPLICATION SLAVE ON *.* to 'root'@'192.168.1.137' identified by 'q1w2e3r4';//帳戶建議使用非root帳號密碼,本命令行僅示例
查詢主數據庫Master的狀態,並記錄狀態值:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 640 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:執行完此步驟後不要再操作主服務器MYSQL,防止主服務器狀態值變化
配置從服務器Slave:
Mysql>change master to master_host=‘192.168.1.136’,master_user=‘root’,master_password=’q1w2e3r4’,master_log_file=’ mysql-bin.000003’,master_log_pos=640;
注:此命令行帳戶信息,與主服務器授權帳號信息一致
啟動從服務器復制功能:
Mysql>start slave;
檢查從服務器復制功能狀態:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.136 //主服務器地址
Master_User: root //授權帳戶名,盡量避免使用root
Master_Port: 3306 //數據庫端口,部分版本沒有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 1203
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 251
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes //此狀態必須YES
Slave_SQL_Running: Yes //此狀態必須YES
注:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
以上操作過程,主從服務器配置完成。
主從服務器測試:
主服務器Mysql,建立數據庫,並在這個庫中建表插入一條數據:
mysql> create database hichina_db;
mysql> use hichina_db;
mysql> create table hichina_tb(id int(3),name char(10));
mysql> insert into hichina_tb values (001,'bobwu');
從服務器Mysql查詢:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hichina_db | //我在這裡
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use hichina_db;
Database changed
mysql> show tables;
+----------------------+