mysql主從配置


Mysql的主從復制至少是需要兩個Mysql的服務,當然Mysql的服務是可以分布在不同的服務器上,也可以在一台服務器上啟動多個服務。

首先確保主從服務器上的Mysql版本相同(這是在一台服務器上的情況版本不同,如果是分開的,最好使用同版本mysql)。

一、安裝部署mysql

1、 安裝服務器端:yum install mysql-server

         yum install mysql-devel

  安裝客戶端:   yum install mysql

2、啟動服務

service mysqld start

3、安裝完后執行下面命令進行初始化配置,會要求設置密碼:

/usr/bin/mysql_secure_installation

4、設置允許遠程連接到該mysql服務器

登陸到mysql: mysql -uroot -ptest123

 

[root@zhoujietest ~]# mysql -uroot -ptest123  #賬號root,密碼test123
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.5.35-log MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

這時比如通過navicat連接是是失敗的。需要設置下mysql庫下面的user表,開啟遠程連接權限:

//  查看user表

mysql> use mysql;
Database changed
mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host         | user | password                                  |
+--------------+------+-------------------------------------------+
| localhost    | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
2 rows in set (0.00 sec)

授權:

mysql> use mysql;
Database changed
mysql> grant all privileges  on *.* to root@'%' identified by "password";
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user;
+--------------+------+-------------------------------------------+
| host         | user | password                                  |
+--------------+------+-------------------------------------------+
| localhost    | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
| %            | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
+--------------+------+-------------------------------------------+
3 rows in set (0.00 sec)

二、配置mysql主從同步

 

准備兩台測試的虛擬機,如上安裝mysql環境,並開啟mysql服務

主master : 192.168.8.10

從slave  :   192.168.8.11

1.配置主庫:

1)、授權給從數據庫服務器

mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.8.11' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

2)、修改主庫配置文件,開啟binlog,並設置server-id,每次修改配置文件后都要重啟mysql服務才會生效

vim /etc/my.cnf (路徑根據你們自己的來修改)

在該配置文件[mysqld]下面添加下面內容:

[mysqld]
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = cmdb

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

  server-id:master端的ID號;

  log-bin:同步的日志路徑及文件名,一定注意這個目錄要是mysql有權限寫入的(我這里是偷懶了,直接放在了下面那個datadir下面);

  binlog-do-db:要同步的數據庫名

還可以顯示 設置不同步的數據庫:

  binlog-ignore-db = mysql 不同步mysql庫和test庫
  binlog-ignore-db = test

 

修改配置文件后,重啟服務:service mysqld restart

如果啟動失敗,通過cat /var/log/mysqld.log | tail -30  查看mysql啟動失敗的日志,從日志內容尋找解決方案。

3)、查看主服務器當前二進制日志名和偏移量,這個操作的目的是為了在從數據庫啟動后,從這個點開始進行數據的恢復

mysql> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000001 |     1304 | cmdb         |                  |
+---------------+----------+--------------+------------------+
row in set (0.00 sec)

主服務器已配置好。

 

2、配置從庫

1)、理所當然也是從配置文件着手,在/etc/my.cnf 添加下面配置:

[mysqld]
server-id=2
master-host=192.168.8.10
master-user=rep1
master-password=test123456
master-port=3306
replicate-do-db=cmdb

如果重啟時報錯:mysqld: unknown variable ‘master-host=

說明mysql不認識這些變量,網上搜羅了一番,原因是mysql5.5+版本主從復制不支持這些變量,需要在從庫上用命令來設置:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
  MASTER_PORT=3306,
  MASTER_USER='rep1',
  MASTER_PASSWORD='test123456',
  MASTER_LOG_FILE='binlog.000001',
  MASTER_LOG_POS=1304; #后面兩個參數的值與主庫保持一致

2)、啟動slave進程

mysql> slave start;
Query OK, 0 rows affected (0.04 sec)

3)、查看slave的狀態,如果下面兩項值為YES,則表示配置正確:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

 

三、同步主庫已有數據到從庫

主庫操作:

1、停止主庫的數據更新操作

mysql>flush tables with read lock;

2、新開終端,生成主數據庫的備份(導出數據庫)

[root@zhoujietest ~]# mysqldump -uroot -ptest123 cmdb > cmdb.sql

3、將備份文件傳到從庫

[root@zhoujietest ~]# scp cmdb.sql root@192.168.8.11:/root/

4、主庫解鎖

mysql>unlock tables;

從庫操作:

1、停止從庫slave

mysql>slave stop;

2、新建數據庫cmdb

mysql> create database cmdb default charset utf8;

3、導入數據

[root@ops-dev ~]# mysql -uroot -ptest123 cmdb<cmdb.sql 

4、查看從庫已有該數據庫和數據 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

 

 

此時主從庫的數據完全一致,如果對主庫進行增刪改操作,從庫會自動同步進行操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM