CentOS7+mysql5.6 Master-Slave主從數據庫設置

一、安裝CentOS7

主機1:10.175.201.254   master

主機2:10.175.201.253   slave

 

二、安裝mysql,初始配置,並實現遠程連接

1、安裝

# yum install mysql

# yum install mysql-server

# yum install mysql-devel

Mysql-server會安裝失敗,因爲CentOS 7 版本將MySQL數據庫軟件從默認的程序列表中移除,用mariadb代替了。所以需要從官網下載mysql-server安裝

# wgethttp://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server

 

如果提示wget命令找不到,先安裝wget

# yum -y install wget

 

mysql-server安裝成功後,重啓mysql服務

# service mysqld restart

    2、初始配置

第一次安裝的mysql的root賬戶沒有密碼,可以直接進入root

# mysql -u root
 

進去後,爲了數據庫的安全,最好爲root賬戶設置一個密碼

mysql> set password for 'root'@'localhost'=password('password');

Query OK, 0 rows affected (0.00 sec)

 
設置密碼後,不需要重啓服務,下次進入mysql控制檯時使用命令
# mysql -u root -p
然後輸入密碼即可。
 
查看默認的數據庫

mysql> show databases;

 
mysql安裝完成後,mariadb會被自動替換。不在生效
 

3、遠程連接

Mysql默認狀態下,root賬戶是不允許遠程連接的,解決方法有兩種:一是改變root賬戶的權限;二是重新創建一個用戶。建議使用第二種。

如:創建用戶luojia,密碼luojia

mysql>create user 'luojia'@'%' identifiedby 'luojia';

創建好之後,便可以遠程用數據庫管理工具(如:Navicat)通過新建的用戶連接並管理數據庫

 

 

如果不想創建用戶而用root連接,需要修改root用戶權限

mysql> grant all privileges on *.* toroot@'%'identified by 'password';

 

如果以上步驟都進行了還是連不上數據庫,可能是因爲CentOS的防火牆

在服務器端吧防火牆關閉後再連接即可

 

查看防火牆狀態

# systemctl list-unit-files|grepfirewalld.service

如果顯示firewalld.service enabled則需要關閉

# systemctl stop firewalld.service #停止firewall服務

# systemctl disable firewalld.service #禁止firewall開機啓動

 

關閉防火牆後如果還連不上,可能是mysql默認使用的端口3306被佔用,命令

# netstat -ntlp

可以 查看端口占用情況

 

三、配置Master主數據庫

1、修改配置文件

Linux環境下,mysql的配置文件位於 /etc/my.cnf

# vi /etc/my.cnf   編輯配置文件

按i 進入插入編輯模式

配置文件中加入

log-bin=mysql-bin

server-id=2

binlog-ignore-db=information_schema

binlog-ignore-db=cluster

binlog-ignore-db=mysql

binlog-do-db=ufind_db

 

server-id:用於標識唯一的數據庫,這裏設置爲2,在設置從庫的時候就需要設置爲其他值。

binlog-ignore-db:表示同步的時候ignore的數據庫
binlog-do-db:指定需要同步的數據庫

 

2、重啓服務

# service mysqld restart

 

3、賦予Slave從數據庫權限

# mysql -u root -p

進入mysql命令行模式

mysql> GRANT FILE ON *.* TO'luojia'@'10.175.201.253' IDENTIFIED BY 'luojia';

賦予10.175.201.253的luojia用戶即Slave機器有File權限

 

mysql> GRANT REPLICATION SLAVE ON *.* TO'luojia'@'10.175.201.253' IDENTIFIED BY 'luojia';

賦予10.175.201.253的luojia用戶有REPLICATION SLAVE權限

mysql> FLUSH PRIVILEGES

 

flush privileges 命令本質上的作用是將當前user和privilige表中的用戶信息/權限設置從mysql庫(MySQL數據庫的內置庫)中提取到內存裏。MySQL用戶數據和權限有修改後,希望在"不重啓MySQL服務"的情況下直接生效,那麼就需要執行這個命令。通常是在修改ROOT帳號的設置後,怕重啓後無法再登錄進來,那麼直接flush之後就可以看權限設置是否生效。而不必冒太大風險。

 

4、重啓服務,進入mysql,查看主數據庫信息

mysql> show master status;

其中file和position在配置slave的時候會用到。Binlog_Do_DB表示要同步的數據庫,Binlog_Ignore_DB 表示Ignore的數據庫,這些都是在配置的時候進行指定的。

如果執行這個步驟最後爲Empty set(0.00 sec),那說明前面的my.cnf沒配置對。

 

四、配置Slave從數據庫

修改配置文件,方法同上,加入內容爲:

log-bin=mysql-bin

server-id=3

binlog-ignore-db=information_schema

binlog-ignore-db=cluster

binlog-ignore-db=mysql

replicate-do-db=ufind_db

replicate-ignore-db=mysql

log-slave-updates

slave-skip-errors=all

slave-net-timeout=60

修改完後重啓服務。

注意,在MySQL5.6及之後的版本中沒有指定master_host,master_user等信息,需要用命令配置。

2、配置特殊參數

進入mysql控制檯

mysql> stop slave;  #關閉Slave

mysql> change master tomaster_host='10.175.201.254',master_user='luojia',master_password='luojia',master_log_file='mysql-bin.000005',master_log_pos=120;

mysql> start slave;  #開啓Slave

3、  查看Slave信息

mysql> show slavestatus;

可以看到相關參數已經配置成功。

 

五、測試是否設置成功

在兩個配置文件中加入想要同步的數據庫名,如test。

Mastermy.cnf  中加入 binlog-do-db=ufind_db

Slavemy.cnf 中加入replicate-do-db=ufind_db

重啓Mysql,根據show master status的參數變化,在Slave從數據庫中重新執行

mysql> stop slave;  #關閉Slave

mysql> change master tomaster_host='10.175.201.254',master_user='luojia',master_password='luojia',master_log_file='mysql-bin.000005',master_log_pos=120;

mysql> start slave;  #開啓Slave

 

最後,通過數據庫管理工具連接mysql後,在master上進行test數據庫的CRUD操作,查看Slave數據庫是否會同步變化。

 

 參考:http://blog.chinaunix.net/uid-25266990-id-3465550.html

             http://blog.csdn.net/xlgen157387/article/details/51331244/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章