根據項目要求,我們編寫一個基于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
#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”
以上操作過程主、從伺服器均相同。
主從配置: 修改配置檔案:
主伺服器Master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1 //預設是1,保持不變
從伺服器Slave
#vi /etc/my.cnf
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)
Database changed
mysql> show tables;
+----------------------+
| Tables_in_hichina_db |
| hichina_tb | //我在這裡
mysql> select * from hichina_tb;
+------+--------+
| id | name |
| 1 | bobwu | //我在這裡