程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MYSQL 主從復制讀寫分離實現基礎教程

MYSQL 主從復制讀寫分離實現基礎教程

編輯:MYSQL入門知識
 

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;

+----------------------+  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved