在網上搜索了很多資料,都沒有看到像樣的文檔,思路不是很清晰,對第一次安裝的朋友來說較為困難,經過長時間的安裝嘗試和查詢網上零碎的知識點,終于成功的完成Linux系統下多MySql數據庫安裝和主從配置,現在分享給大家。
前提:
1、關閉Liunx系統的防火墻,如果忘了,你下面的測試連接必定會失敗,切記,切記,切記。
2、下載linux系統自帶的mysql
查找已安裝的myslq 版本:#rpm??-qa?|?grep??mysql?????#(注意大小寫,如果mysql?不行就換MySQL)
將搜索出的包名卸載:
#rpm -e? --nodeps?mysql-5?.0?.22-2?.1?.0?.1? ?#(nodeps表示強制刪除)
再次查找該包名,如果沒有結果輸出則表明已將該版本的mysql卸載了 ;
3、yum安裝lrzsz和cmake
yum -y install lrzsz;
yum -y install cmake;
首先熟悉MySql數據庫,很多人都是直接安裝原生版的MySql數據庫(就是官網上下載的數據庫安裝包),也有人用的是MySql的衍生版數據庫,如percona,我用的就是這種,下面我會分別說明原生版和衍生版MySql數據庫的安裝和主從配置。
Linux下多個原生版MySql數據庫的安裝及主從配置:
1、下載MySql數據庫http://dev.mysql.com/downloads/mysql/5.5.html#downloads
下載的是64位系統,我使用的是CentOS6.6 64位系統
2、安裝第一個數據庫
-- cd /usr/local/src
-- mkdir mysql
-- cd mysql
-- rz(上傳安裝包)
-- tar -xvf MySQL-5.5.47-1.linux2.6.x86_64.rpm-bundle.tar
-- rpm -ivh MySQL-server-5.5.47-1.linux2.6.x86_64.rpm
-- rpm -ivh MySQL-client-5.5.47-1.linux2.6.x86_64.rpm
-- rpm -ivh MySQL-devel-5.5.47-1.linux2.6.x86_64.rpm
到這里就安裝結束了
3、啟動數據庫、修改數據庫密碼和登錄數據庫
-- service mysql start
-- mysqladmin -uroot password ‘root’
-- mysql -uroot -proot
4、提供遠程連接的權限
在登錄mysql的狀態下執行下面的命令
-- grant all privileges on *.* to 'root' @'%' identified by 'root';
-- flush privileges;
執行結束后使用外部的工具連接庫,我這里使用的是navicat,連接的時候會報這樣測錯誤:
就因為這個錯誤,讓我苦苦研究很長時間,其實解決起來很方便的。下面是解決方案:
rpm安裝原生版的mysql是沒有my.cnf文件的,在網上查各種資料都是讓我修改my.cnf配置文件,但是我始終沒有找到這個文件,后來在網上看到博友的博文這里將截圖貼上如下:
主要看第二種說法,我的操作如下:
-- cd /usr/share/mysql
-- cp my-medium.cnf /etc/
-- cd /etc
-- mv my-medium.cnf my.cnf
-- vim my.cnf
配置文件中許多內容都是被我注釋了,但是不注釋也沒有太大的影響,但是主要是找到bind-address =
127.0.0.1,如果有就注釋掉,沒有就不用管了,我當時在我的配置文件中是沒有找到這句話的。接下來是在配置文件的[mysqld]這句話下一行添
加一句話skip-name-resolve,保存文件,重新啟動數據庫(命令:service mysql
restart),這個時候再遠程連接數據庫就可以連接的上了(如圖)。
好了,到此為止第一個Mysql數據庫就安裝成功了。
5、第二個Mysql數據庫的安裝之創建目錄
-- cd /usr/local
-- mkdir mysql
-- cd mysql
-- mkdir data
-- mkdir etc
-- mkdir logs
-- mkdir var
-- chown mysql:mysql /usr/local/mysql/ -R
-- cp /etc/my.cnf /usr/local/mysql/etc/
-- vim /usr/local/mysql/etc/my.cnf
這里需要將所有的內容都注釋掉,然后添加下面的內容:
[mysqld]
skip-name-resolve
port=3307
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql-3307.sock
user=mysql
log_error=/usr/local/mysql/logs/db_error.log
# Disabling symbolic-links is recommended to prevent assorted securityrisks
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql/logs/db_error.log
pid-file=/usr/local/mysql/mysqld-3307.pid
保存配置文件,準備安裝
6、安裝第二個Mysql數據庫、啟動數據庫
上面的配置文件都配置好了,接下來就是安裝了
安裝命令:
/usr/bin/mysql_install_db
--defaults-file=/usr/local/mysql/etc/my.cnf? --basedir=/usr/
--datadir=/usr/local/mysql/data? --user=mysql
啟動數據庫
/usr/bin/mysqld_safe?--defaults-file=/usr/local/mysql/etc/my.cnf &
7、修改密碼、登錄、設置遠程訪問權限
修改密碼:
mysqladmin -h127.0.0.1 -P3307 -uroot password "root"
登錄:
mysql -uroot -h127.0.0.1 -P3307 -p
設置遠程訪問權限:
grant all privileges on *.* to 'root' @'%' identified by 'root';
flush privileges;
到此第二個數據庫就安裝結束了,這里測試連接就不演示了,和上面的一樣,這里的skip-name-resolve已經在修改配置文件的時候加上了,正常安裝啟動時不會出現問題的。
8、主從配置之配置主數據庫
-- vim /etc/my.cnf
在[mysqld]所在行下另起一行,加上下面的幾句話
log-bin=mysql3306-bin
//test表示主從之間需要同步的數據庫,如果有多個就用逗號隔開,但是需要同步的數據庫較多時建議直接不寫這句話,因為逗號隔開可能會存在一些問題,直接不寫這句配置,表示同步整個數據庫
binlog-do-db=test
server-id=101? //這里的服務id可以是任意值,但是要保證唯一
配置文件修改完畢,保存配置文件,重啟數據庫。
使用navicat數據庫工具執行命令:SHOW MASTER STATUS查看主庫的狀態如下(不同數據庫值不同,記住這兩個值):
下面就是為從庫創建用戶:
grant replication slave on *.* to 'slave01'@'127.0.0.1' identified by'123456';
flush privileges;
這里的127.0.0.1需要根據你的從數據庫所在機器的ip配置,要是覺得指定ip容易出錯,就直接使用“%”代替。
小插曲:
上面的兩句sql命令在我的navicat中無法執行,如果博友你也出現這種情況,不防直接命令行連接數據庫執行這兩句話,效果一樣。
好了,到此為止主數據庫就配置完成嘍!
9、主從配置之配置從數據庫
-- vim /usr/local/mysql/etc/my.cnf
這里配置相對主庫較為簡單,只要配置[mysqld]下中的一個server-id即可,唯一需要注意的是server-id的唯一性,保存配置文件,重新啟動數據庫(用
ps -ef | grep mysql 查詢到3307 從數據庫的進程編號,kill命令(kill
xxx)殺死3307從數據庫的進程,然后重新執行啟動數據庫命令就好,注意從數據庫啟動和主數據庫的不同)。
然后使用navicat工具執行下面的sql語句:
CHANGE MASTER TO
master_host='127.0.0.1',
master_user='slave01',
master_password='123456',
master_port=3306,
master_log_file=' mysql3306-bin.000002',
master_log_pos= 1942;
啟動從數據庫的同步:
START SLAVE;
查看從數據庫的狀態:
SHOW SLAVE STATUS;
注意看其中的兩個值:
這兩個都為“yes”才是成功,有一個為“no”都不行。
現在就測試修改數據吧!
首先在主庫中隨便修改一條數據并保存,到從庫刷新,看是否同步,如果是同步了恭喜你成功了。
啟動從庫常見問題:
報錯信息:
代碼如下:
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).
意思很明顯:就是兩個mysql的server-id的值不唯一或者一致了。需要修改成不一樣的才行。
如果不確定各自的值為多少時可以啟動兩個數據后分別進入到不同端口的mysql界面查看這個server-id的值:
使用如下命令查看了一下server_id
復制代碼代碼如下:
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
如果一樣的就修改下,改成不一樣的就可以了,然后重新啟動主庫和從庫,把原來的slave01用戶刪了,重新設置slave01用戶以及后面的操作。
如果還有問題可參見這個博客,我也是從這里獲得幫助的:
======================================================================================
Linux下多個衍生版Mysql的安裝和主從配置:
1、下載衍生版數據庫Percona,地址:https://www.percona.com/downloads/Percona-Server-5.6/LATEST/
2、安裝第一個數據庫
-- cd /usr/local/src
-- mkdir mysql-percona
-- cd mysql-percona
-- rz(上傳安裝包)
-- tar -xvf Percona-Server-5.5.47-37.7-r764f304-el6-x86_64-bundle.tar
-- rpm -ivh Percona-Server-shared-55-5.5.47-rel37.7.el6.x86_64.rpm
-- rpm -ivh Percona-Server-client-55-5.5.47-rel37.7.el6.x86_64.rpm
-- rpm -ivh Percona-Server-server-55-5.5.47-rel37.7.el6.x86_64.rpm
這里安裝結束后和原生版的不同,這個會自動生成一個my.cnf文件保存在/etc目錄下。
啟動服務(service mysql
start)、修改root用戶密碼、登錄、設置遠程連接權限、以及修改my.cnf配置文件內容和上面的原生版相同(注意這里是修改內容步驟一樣,這里
不再需要從其他目錄拷貝文件到/etc目錄下并改文件名,因為衍生版安裝時會自動生成一個my.cnf文件保存在/etc目錄下)。
記得重新啟動數據庫,連接測試。
3、安裝第二個衍生版Mysql數據庫很簡單,這里安裝的步驟和安裝第二個原生版Mysql是完全相同的,這里就不多說了。
4、主從配置
這里的主從配置和原生版的是完全相同的,不再贅述。