實現mysql主從在線同步
一.工作環境及條件
主數據庫:172.25.0.254
從數據庫:172.25.0.11
操作系統:RHRL7
MySQL版本:mariadb-5.5.35
安裝MYSQL(yum源安裝)
主數據庫
[root@master ~]# yum clean all
[root@master ~]# yum -y install mariadb*
從數據庫
[root@slave ~]# yum clean all
開啟mariadb服務
[root@master ~]# systemctl start mariadb
[root@slave ~]# systemctl start mariadb
關閉防火墻(或者開發防火墻的mysql服務和3306端口)
[root@master ~]# systemctl stop firewalld.service
[root@slave ~]# systemctl stop firewalld.service
二.mysql主從復制配置方法
1.主數據庫
修改主庫my.cnf主要設置個不一樣的ID,以及同步的數據庫的名字和端口號(默認為3306)
[root@slave ~]# vim /etc/my.cnf
在[mysqld]中加入內容如下
server-id=1
log-bin=lhb
port=3306
重啟服務使配置生效
[root@master ~]# systemctl restart mariadb
設置mysql登錄密碼(默認情況下登錄密碼為空)
[root@master ~]# mysqladmin -uroot password '123456'
登錄主庫賦予從庫權限賬號,允許用戶在主庫上讀取日志(用戶名:admin,密碼:123456)
[root@master ~]# mysql -uroot -p123456
在mysql里面輸入
MariaDB [(none)]> grant replication slave on *.* to 'admin'@'172.25.0.254' identified by '123456';
為驗證賬號我們可以在從的機器上用命令作如下測試
[root@slave ~]# mysql -uadmin -p123456 -h 172.25.0.11
顯示主數據看的信息
MariaDB [(none)]> show master status;
+------------+----------+--------------+------------------+
| File? ? ? | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------+----------+--------------+------------------+
| lhb.000001 |? ? ? 537 |? ? ? ? ? ? ? |? ? ? ? ? ? ? ? ? |
+------------+----------+--------------+------------------+
1 row in set (0.00 sec)
(記錄File、Position的值,設置從數據庫的時候會用到)
2.從數據庫
修改從數據庫的my.cnf,在[mysqld]如下:
server-id=2
重啟下數據庫
[root@slave ~]# systemctl restart mariadb
設置mysql登錄密碼(默認情況下登錄密碼為空)
[root@slave ~]# mysqladmin -uroot password '123456'
登錄數據庫
[root@slave ~]# mysql -uroot -p123456
在從數據庫上設置同步
MariaDB [(none)]> slave stop;
Query OK, 0 rows affected, 1 warning (0.00 sec)
MariaDB [(none)]> change master to master_host='172.25.0.11',master_user='admin',master_password='123456',master_log_file='lhb.000001',master_log_pos=537;
Query OK, 0 rows affected (0.03 sec)
MariaDB [(none)]> slave start;
Query
MariaDB [(none)]> show slave status\G;
看到以下兩行為Yes,表示成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
假如你的Slave_IO_Running:Connecting或者No
那么可能出現以下幾點問題:
1.主從兩個數據庫不通。
2.server-id設置錯誤。
3.position設置錯誤
4.防火墻沒關閉或者沒開放mysql端口
3.測試
在主數據庫上新建數據庫,看看是否會同步。
主數據庫上:
MariaDB [(none)]> show databases;
+--------------------+
| Database? ? ? ? ? |
+--------------------+
| information_schema |
| mysql? ? ? ? ? ? ? |
| performance_schema |
| test? ? ? ? ? ? ? |
+--------------------+
4 rows in set (0.01 sec)
從數據庫上:
MariaDB [(none)]> show databases;
+--------------------+
| Database? ? ? ? ? |
+--------------------+
| information_schema |
| mysql? ? ? ? ? ? ? |
| performance_schema |
| test? ? ? ? ? ? ? |
+--------------------+
4 rows in set (0.01 sec)
主數據庫上創建數據庫并查看
MariaDB [(none)]> create database lhbdb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;? ? ?
+--------------------+
| Database? ? ? ? ? |
+--------------------+
| information_schema |
| lhbdb? ? ? ? ? ? ? |
| mysql? ? ? ? ? ? ? |
| performance_schema |
| test? ? ? ? ? ? ? |
+--------------------+
5 rows in set (0.00 sec)
從庫上查看是否同步
MariaDB [(none)]> show databases;
+--------------------+
| Database? ? ? ? ? |
+--------------------+
| information_schema |
| lhbdb? ? ? ? ? ? ? |
| mysql? ? ? ? ? ? ? |
| performance_schema |
| test? ? ? ? ? ? ? |
+--------------------+
5 rows in set (0.01 sec)
由此可以看到在主數據庫上建立數據庫lhbdb,則表示成功了。^_^^_^^_^