一、安裝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/