MySQL主從詳細安裝步驟


網站:

程序在:web服務器192.168.1.100上面

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

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

環境說明 

1、 Web服務器

系統:CentOS 6.5-x64

IP:192.168.21.129 

Web環境:apache+php (無)

2、 MySQL主服務器 

系統:CentOS 6.5-x64

IP:192.168. 1.123

主機名稱:MySQLMaster 

MySQL版本:mysql-5.5.22 

3、 MySQL從服務器 

系統:CentOS 6.5-x64

IP:192.168.1.124

主機名稱:MySQLSlave 

MySQL版本:mysql-5.5.22 

4、 客戶機

系統:Windows 7

IP:192.168.21.130 

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

_______________________________________________________________________________

教程開始:

一、            安裝MySQL

 

說明:在兩台MySQL服務器192.168.1.123和192.168.1.124上分別進行如下操作,安裝MySQL 5.5.22 

 

1、配置防火牆,開啟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

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

 

2、關閉SELINUX

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

#SELINUX=enforcing  #注釋掉

#SELINUXTYPE=targeted  #注釋掉

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

:wq   #保存,關閉

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

 

3、安裝編譯工具 

[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

 

4、下載軟件包

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

 

5、 安裝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看結果可知安裝是否正確

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

 

6、安裝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安裝完成!

 

 

二、在Web服務器192.168.21.129中進行以下操作 

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

登錄到Web服務器,執行以下命令

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

 

 

三、 配置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上面的數據庫,並且只具有數據庫備份的權限。

 

 

四、在客戶機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

 

后面略過!

 

 

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

1、導出數據庫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:路徑 #可以傳輸文件夾

 

2、導入數據庫到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' 設置密碼

 

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

 

 

六、配置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,后面會用到。

 

 

七、配置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,即說明配置成功!

 

 

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

 1、進入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表

 

2、進入MySQL從服務器

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

mysql> use yunweia#進入數據庫

mysql> show tables;

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

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM