MySQL主從詳細安裝步驟

網站:php

程序在:web服務器192.168.1.100上面html

數據庫在:MySQL服務器192.168.1.123上面mysql

實現目的:增長一臺MySQL備份服務器(192.168.1.124),做爲MySQL服務器(192.168.1.123)的從服務器,這兩臺MySQL服務器之間實現雙機熱備。即:從服務器(192.168.1.124)上面指定的數據永遠與主服務器(192.168.1.123)上面的指定的數據保持同步,而且隨着主服務器(192.168.1.123)上面的指定的數據庫的變化而變化。linux

環境說明 c++

一、 Web服務器web

系統:CentOS 6.5-x64sql

IP:192.168.21.129 數據庫

Web環境:apache+php (無)apache

二、 MySQL主服務器 bootstrap

系統:CentOS 6.5-x64

IP:192.168. 1.123

主機名稱:MySQLMaster 

MySQL版本:mysql-5.5.22 

三、 MySQL從服務器 

系統:CentOS 6.5-x64

IP:192.168.1.124

主機名稱:MySQLSlave 

MySQL版本:mysql-5.5.22 

四、 客戶機

系統:Windows 7

IP:192.168.21.130 

備註:做爲主從服務器的MySQL版本建議使用同一版本!或者必須保證主服務器的MySQL版本要高於從服務器的MySQL版本(MySQL版本是向下兼容的)

_______________________________________________________________________________

教程開始:

1、            安裝MySQL

 

說明:在兩臺MySQL服務器192.168.1.123和192.168.1.124上分別進行以下操做,安裝MySQL 5.5.22 

 

一、配置防火牆,開啓MySQL默認3306端口 

[root@localhost ~]# vi /etc/sysconfig/iptables

#編輯防火牆配置文件:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

 

[root@localhost ~]# /etc/init.d/iptables restart

#重啓防火牆,使配置生效

 

二、關閉SELINUX

[root@localhost ~]# vi /etc/selinux/config

#SELINUX=enforcing  #註釋掉

#SELINUXTYPE=targeted  #註釋掉

SELINUX=disabled  #修改,沒有就增長

:wq   #保存,關閉

[root@localhost ~]# shutdown -r now  #重啓系統

 

三、安裝編譯工具 

[root@localhost ~]# yum install wget make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd  kernel keyutils  patch  perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch

 

四、下載軟件包

cd /usr/local/src  #進入軟件包下載目錄 

(1)、下載cmake(MySQL編譯工具) 

wgethttp://www.cmake.org/files/v2.8/cmake-2.8.7.tar.gz 

(2)、下載MySQL 

 wgethttp://mysql.mirror.kangaroot.net/Downloads/MySQL-5.5/mysql-5.5.22.tar.gz

 

說明:MySQL5.5版本之後須要使用cmake編譯安裝,可先下載到電腦上用lrzsz上傳

[root@localhost src]# yum install -y lrzsz

[root@localhost src]# rz

 

五、 安裝cmake

[root@localhost src]# tar zxvf cmake-2.8.7.tar.gz

[root@localhost src]# cd cmake-2.8.7

[root@localhost cmake-2.8.7]# ./bootstrap

 

 

===============================================================================

第一次安裝時候報錯以下:

 

報錯:缺乏C的編譯器

 

[root@localhost ~]# yum install gcc

 

繼續cmake的安裝

 

[root@localhost cmake-2.8.7]# ./bootstrap

 

再次報錯:缺乏C++編譯器

 

 

[root@localhost ~]# yum install gcc-c++

 

重複上面的操做

 

[root@localhost cmake-2.8.7]# ./bootstrap

[root@localhost cmake-2.8.7]# make && make install  #編譯並安裝

注:檢查安裝 which cmake看結果可知安裝是否正確

===============================================================================

 

六、安裝mysql 

[root@localhost ~]# groupadd mysql#添加mysql組

[root@localhost ~]# useradd -g mysql mysql -s /bin/false

#建立用戶mysql並加入到mysql組,不容許mysql用戶直接登陸系統 

注:[root@localhost ~]# groups mysql查看mysql用戶所在的組,以及組內成員

 

[root@localhost ~]# mkdir -p /data/mysql#建立MySQL數據庫存放目錄

[root@localhost ~]# chown mysql:mysql /data/mysql –R#設置MySQL數據庫目錄權限

[root@localhost ~]# mkdir -p /usr/local/mysql#建立MySQL安裝目錄

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# tar zxvf mysql-5.5.22.tar.gz#解壓MySQL

[root@localhost src]# cd mysql-5.5.22

[root@localhost mysql-5.5.22]# cmake .\

>-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

>-DMYSQL_DATADIR=/data/mysql \

>-DSYSCONFDIR=/etc \  #配置

 

 

報錯:缺乏ncurses-devel包

 

[root@localhost ~]#yum install ncurses-devel

 

刪除CMakeCache.txt文件

 

[root@localhost ~]# find / -name CMakeCache.txt

[root@localhost ~]# rm –f+絕對路徑  #刪除查找到的文件便可

 

重複上面的操做

 

[root@localhost mysql-5.5.22]# cmake .\

>-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

>-DMYSQL_DATADIR=/data/mysql \

>-DSYSCONFDIR=/etc \  #配置

 

[root@localhost mysql-5.5.22]# make && make install#編譯並安裝

[root@localhost ~]# cd /usr/local/mysql

[root@localhost mysql]# cp ./support-files/my-huge.cnf /etc/my.cnf

#拷貝配置文件(注意:若是/etc目錄下面默認有一個my.cnf,直接覆蓋便可) 

 

[root@localhost mysql]# vi /etc/my.cnf

#編輯配置文件,在 [mysqld] 部分增長

datadir = /data/mysql  #添加MySQL數據庫路徑(注意=左右的空格) 

 

[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql

#生成mysql系統數據庫

 

[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

#把Mysql加入系統啓動

 

[root@localhost mysql]# chmod 755 /etc/init.d/mysqld  #增長執行權限

[root@localhost mysql]# chkconfig mysqld on  #加入開機啓動

[root@localhost mysql]# vi /etc/rc.d/init.d/mysqld

#編輯:basedir = /usr/local/mysql  #MySQL程序安裝路徑

datadir = /data/mysql  #MySQl數據庫存放目錄

 

[root@localhost mysql]# service mysqld start  #啓動MySQL

[root@localhost mysql]# vi /etc/profile

#把mysql服務加入系統環境變量

在最後添加下面這一行:export PATH=$PATH:/usr/local/mysql/bin

 

下面這兩行把myslq的庫文件連接到系統默認的位置,這樣你在編譯相似PHP等軟件時能夠不用指定mysql的庫文件地址

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

 

[root@localhost mysql]# reboot

#須要重啓系統,等待系統從新啓動以後繼續在終端命令行下面操做

注:或者使用shutdown –r now 重啓系統

 

[root@localhost ~]# mysql_secure_installation  # MySQL安全配置嚮導,設置MySQL密碼

[root@localhost ~]# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL

      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current

password for the root user.  If you've just installed MySQL, and

you haven't set the root password yet, the password will be blank,

so you should just press enter here.

Enter current password for root (enter for none): <-初次運行直接回車

OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL

root user without the proper authorisation.

Set root password? [Y/n] y<-是否設置root用戶密碼,輸入y並回車或者直接回車

New password: <-設置root用戶密碼

Re-enter new password: <-再輸入一次你設置的密碼

Password updated successfully!

Reloading privilege tables..

 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone

to log into MySQL without having to have a user account created for

them.  This is intended only for testing, and to make the installation

go a bit smoother.  You should remove them before moving into a

production environment.

Remove anonymous users? [Y/n] y<-是否刪除匿名用戶,生產環境建議刪除

 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This

ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y<-時候禁止root遠程登錄,根據本身的需求選擇Y/n並回車,建議禁止

 ... Success!

By default, MySQL comes with a database named 'test' that anyone can

access.  This is also intended only for testing, and should be removed

before moving into a production environment.

Remove test database and access to it? [Y/n] y<-是否刪除test數據庫和對test庫的訪問權限,直接回車

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!

Reloading the privilege tables will ensure that all changes made so far

will take effect immediately.

Reload privilege tables now? [Y/n] <-是否從新加載權限表,直接回車

 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MySQL

installation should now be secure.

Thanks for using MySQL!

 

或者直接修改密碼

[root@localhost ~]#/usr/local/mysql/bin/mysqladmin –u root –p password ‘123456’

[root@localhost ~]#service mysql restart  #重啓MySQL服務

 

到此MySQL安裝完成!

 

 

2、在Web服務器192.168.21.129中進行如下操做 

上傳網站程序到web服務器192.168.21.129的相應目錄(我這裏的apache默認站點目錄是/var/www/html)

登陸到Web服務器,執行如下命令

chownapache.apache /var/www/html  -R    #設置網站目錄權限

 

 

3、 配置MySQL主服務器(192.168.1.123)

[root@localhost ~]# mysql -u root -p#進入MySQL控制檯

mysql> create database yunweia;#創建數據庫yunweia

mysql> insert into mysql.user(Host,User,Password)

-> values('localhost','yunweiuser',password('123456'));#建立用戶yunweiuser 

mysql> grant all on yunweia.* to 'yunweiuser'@'192.168.21.129' identified by '123456' with grant option;

#受權用戶(yunweiuser)從web服務器192.168.21.129徹底訪問數據庫(yunweia)

 

mysql> insert into mysql.user(Host,User,Password)                 -> values('localhost','yunweib',password('123456'));

#創建MySQL主從數據庫同步用戶yunweidb密碼123456

 

mysql> flush privileges;#刷新系統受權表

mysql> grant replication slave  on *.* to 'yunweib'@'192.168.1.122' identified by '123456' with grant option;

#受權用戶yunweib只能從192.168.1.122這個IP訪問主服務器192.168.1.123上面的數據庫,而且只具備數據庫備份的權限。

 

 

4、在客戶機Windows 7(192.168.21.130)中進行如下操做

在客戶機Windows 7 (192.168.21.130)的瀏覽器打開http://bbs.osyunwei.com/(bbs.osyunwei.com域名要事先解析到Web服務器192.168.21.129),出現下面的程序安裝界面,開始安裝-贊成協議,下一步:

數據庫服務器:192.168.1.123

數據庫用戶名:yunweiuser

數據庫密碼:123456

數據庫名:yunweia

 

後面略過!

 

 

5、把MySQL主服務器192.168.1.1239中的數據庫yunweia導入到MySQL從服務器192.168.1.122中

一、導出數據庫yunweia

mysql> show databases;#查看全部庫

 

備註:在導出以前能夠先進入MySQL控制檯執行下面命令

mysql> flush tables with read lock;

#數據庫只讀鎖定命令,防止導出數據庫的時候有數據寫入

mysql> unlock tables; #解除鎖定

 

[root@localhost ~]# mysqldump -u root -p yunweia> /home/yunweib.sql

#在MySQL主服務器進行操做,導出數據庫yunweia到/home/yunweidb.sql

 

[root@localhost ~]# scp /home/yunweib.sql root@192.168.1.122:/home/

#把home目錄下的yunweidb.sql 數據庫文件上傳到MySQL從服務器的home目錄下面

注:scp –r 文件夾用戶@IP:路徑 #能夠傳輸文件夾

 

二、導入數據庫到MySQL從服務器

[root@localhost ~]# mysql -u root –p#進入從服務器MySQL控制檯

mysql> create database yunweia;#建立數據庫yunweia

mysql> use yunweia#進入數據庫

mysql> source /home/yunweib.sql   #導入備份文件到數據庫 

mysql -u osyunweidbbak -h 192.168.21.169 -p  #測試在從服務器上登陸到主服務器

 

註釋:可在主服務器(192.168.1.123)上用如下命令查詢MySQL數據庫中全部用戶及擁有權限(兩條命令均可以)

mysql> select user,host,password from mysql.user;

mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

 

===============================================================================

擴展知識:

mysql> show databases;#查看全部表

mysql> select * from mysql.user\G;   #查看全部用戶權限

 

添加用戶

grant all on 數據庫名.* to 用戶名@localhost identified by '密碼';

 

grant all on gamesp.* to newuser@localhost identified by 'password';

添加一個遠程用戶,名爲username密碼爲password

 

GRANT ALL PRIVILEGES ON *.* TO username@"%" IDENTIFIED BY 'password'

 

說明:

(1)grant all 賦予全部的權限

(2)gamesp.* 數據庫 gamesp 中全部的表

(3)newuser 用戶名

(4)@localhost 在本地電腦上的 mysql server 服務器

(5)identfified by 'password' 設置密碼

 

===============================================================================

 

 

6、配置MySQL主服務器的my.cnf文件

[root@localhost ~]# vi /etc/my.cnf

#編輯配置文件,在[mysqld]部分添加下面內容:

 

server-id=1

#設置服務器id,爲1表示主服務器,注意:若是原來的配置文件中已經有這一行,就不用再添加了。

 

log-bin=mysql-bin

#啓動MySQ二進制日誌系統,注意:若是原來的配置文件中已經有這一行,就無需添加

binlog-do-db=osyunweidb

#須要同步的數據庫名,若是有多個數據庫,可重複此參數,每一個數據庫一行

 

binlog-ignore-db=mysql#不一樣步mysql系統數據庫

:wq!#保存退出 (或者大寫ZZ)

 

[root@localhost ~]# service mysqld restart#重啓MySQL

[root@localhost ~]# mysql -u root –p#進入mysql控制檯 

mysql> show master status;查看主服務器,出現如下相似信息

 

注意:這裏記住File的值:mysql-bin.000009和Position的值:107,後面會用到。

 

 

7、配置MySQL從服務器的my.cnf文件

[root@localhost ~]# vi /etc/my.cnf

#編輯配置文件,在[mysqld]部分添加下面內容:

 

server-id = 2

#配置文件中已經有一行server-id=1,修改其值爲2,表示爲從數據庫

 

log-bin=mysql-bin

#啓動MySQ二進制日誌系統,注意:若是原來的配置文件中已經有這一行,就無需添加

 

replicate-do-db=osyunweidb

#須要同步的數據庫名,若是有多個數據庫,可重複此參數,每一個數據庫一行

 

replicate-ignore-db=mysql   #不一樣步mysql系統數據庫

:wq!   #保存退出 (或者大寫ZZ)

 

[root@localhost ~]# service mysqld restart   #重啓MySQL

 

注意:MySQL 5.1.7版本以後,已經不支持把master配置屬性寫入my.cnf配置文件中了,只須要把同步的數據庫和要忽略的數據庫寫入便可。

 

[root@localhost ~]# mysql -u root –p#進入MySQL控制檯

mysql> slave stop;#中止slave同步進程

 

mysql> change master to

-> master_host='192.168.1.123',master_user='yunweidb',master_password='123456',master_log_file='mysql-bin.000009',master_log_pos=107; #執行同步語句

 

mysql> slave start;#開啓slave同步進程

mysql> show slave status\G;#查看slave同步信息,出現如下內容

 

注意查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

以上這兩個參數的值爲Yes,即說明配置成功!

 

 

8、測試MySQL主從服務器雙機熱備是否成功

 一、進入MySQL主服務器

[root@localhost ~]# mysql -u root –p#進入MySQL控制檯 

mysql> use yunweia#進入數據庫

mysql> CREATE TABLE test ( id int not null primary key,name char(20) );#建立test表

 

二、進入MySQL從服務器

[root@localhost ~]# mysql -u root –p#進入MySQL控制檯

mysql> use yunweia#進入數據庫

mysql> show tables;

#查看yunweia表結構,會看到有一個新建的表test,表示數據庫同步成功。

 

至此,MySQL數據庫配置主從服務器實現雙機熱備實例教程完成!

相關文章
相關標籤/搜索