環境:
主服務器:192.168.100.3 系統 Centos7 test1
從服務器:192.168.100.6 系統 Centos7 test2
主服務器配置:
安裝mariadb數據庫
[root@test1 ~]# yum install mariadb mariadb-server -y [root@test1 ~]# systemctl start mariadb.service [root@test1 ~]# mysql_secure_installation ##初始化數據庫,設置root密碼等等,需要注意允許root遠程連接(實際生產環境中可以另起賬號) [root@test1 ~]# mysql -u root -p ##進入數據庫,輸入密碼 MariaDB [(none)]> show databases; 創建一個測試數據庫DB1: MariaDB [(none)]> create database DB1;
賦予數據庫DB1連接權限:
MariaDB [(none)]> grant all privileges on *.* to root@’%’ identified by ‘redhat‘ with grant option; MariaDB [(none)]> flush privileges; 使用DB1創建一個表: MariaDB [(none)]> use DB1;
MariaDB [DB1]> create table test (name VARCHAR(20), sex CHAR(1), birth DATE, birthaddr VARCHAR(20)); MariaDB [DB1]> insert into test values (‘abccs’,’f’,’1995-10-22′,’china’); ##sql語句插入幾行記錄
將數據庫備份到從服務器上
[root@test1 ~]# mysqldump -h localhost -u root -p DB1 > /root/1.sql [root@test1 ~]# scp -P10060 /root/1.sql root@192.168.100.6:/root/ ##使用SCP命令拷貝到從服務器(test2服務器上,ssh端口為10060)
從服務器配置:
從服務器按照上面的方法安裝mariadb,創建一個空數據庫DB1,不需要創建表,為了將主服務器上的mysql還原到從服務器上。
[root@test2 ~]#yum install mariadb mariadb-server -y [root@test2 ~]#systemctl start mariadb.service [root@test2 ~]# mysql_secure_installation [root@test2 ~]# mysql -u root -p MariaDB [(none)]> create database DB1; [root@test2 ~]# mysql -h localhost -u root -p DB1 < /root/1.sql
Mysql的主從服務器配置:
主服務器配置:
在/etc/my.cnf 添加如下內容:
注:一定要加入到加到mysqld下面,如果加入的位置或者信息不對的話,執行 show master status;結果為空;
配置如下:
#設置服務器ID,為1的表示為主服務器;如果服務器沒有以下配置,添加,如果有就跳過。 server-id=1 ##啟動MySQ二進制日志系統,注意:如果原來的配置文件中已經有這一行,就不用再添加了。 log_bin=mysql-bin? ##需要同步的數據庫名,如果有多個數據庫,可重復此參數,每個數據庫一行\ binlog-do-db=DB1 ##不同步mysql系統數據庫 binlog-ignore-db=mysql
重啟服務
[root@test1 ~]#systemctl restart mariadb.service 進入mysql,查看數據庫主機的配置文件狀態 [root@test1 ~]# mysql -u root -p MariaDB [(none)]> show master status;
查看主服務器,出現以上類似信息;如果看不見以下結果或者為空的話,說明my.cnf配置文件配置的有問題,請檢查即可。
這里記住File的值:mysql-bin.000003和Position的值:663,后面會用到。
從服務器配置:
配置MySQL從服務器的my.cnf文件;區別就是server-id不一樣
在/etc/my.cnf 添加如下內容:
#設置服務器ID,為1的表示為主服務器;如果服務器沒有以下配置,添加,如果有就跳過。 server-id=2 ##啟動MySQ二進制日志系統,注意:如果原來的配置文件中已經有這一行,就不用再添加了。 log_bin=mysql-bin? ##需要同步的數據庫名,如果有多個數據庫,可重復此參數,每個數據庫一行\ binlog-do-db=DB1 ##不同步mysql系統數據庫 binlog-ignore-db=mysql
接下來配置slave,進入從服務器的mysql控制台配置下:
[root@test2 ~]# mysql -uroot -p MariaDB [(none)]> slave stop; MariaDB [DB1]> change master to master_host=’192.168.100.3′,master_user=’root’,master_password=’redhat‘,master_log_file=’mysql-bin?.000003’,master_log_pos=663;
說明:change master to master_host='主服務器',master_user='mysql用戶名', master_password='mysql服務密碼',master_log_file='File值',master_log_pos=Postion值;
MariaDB [(none)]> slave start; ###啟動slave
最后我們查看主從同步是否正常:
MariaDB [(none)]> show slave status \G;
主要是看 Slave_IO_Running 喝Slave_SQL_Runing 這兩個參數是yes就說明主從配置完成。
如果Slave_IO_Running 是 No,可以參考方法:
方法如下:
重置slave.
slave stop;
reset slave;
slave start;
重新執行show slave status \G;
文中部分材料來源:cnblogs作者