環境如下:
單臺數據庫存有數據,要升級爲主從複製的架構。
主數據庫:mysql-master:IP192.168.48.128,數據庫正常提供服務,有數據。
從數據庫:mysql-slave:IP192.168.48.130,數據庫正常提供服務,無數據。
升級大致步驟如下:
1、修改主數據庫配置文件,開啓總從複製必要的功能。
2、在主數據庫中創建一個賬號並授權給從數據庫使用。
3、導出主數據庫中的數據作。
4、修改從數據庫配置文件,開啓總從複製必要的功能。
5、把剛纔主數據庫中導出的數據導入到從數據庫。
6、在從數據庫中配置連接主數據庫要用到的賬戶、密碼等。
7、啓動主從複製功能,並檢查是否正常複製。
開始升級:
在主數據庫上操作:
1)、確保/etc/my.cnf中有如下參數,沒有的話需手工添加,並重啓mysql服務。
[mysqld]
log-bin=mysql-bin 啓動二進制文件
server-id=1 服務器ID
2)、登錄mysql,在mysql中添加一個backup的賬號,並授權給從服務器。
[root@localhost ~]# mysql -uroot –p123456 登錄mysql
mysql> grant replication slave on *.* to 'backup'@'192.168.48.130' identified by 'backup'; 創建backup用戶,並授權給192.168.48.130使用。
3)、查看已有的數據庫有哪些;
mysql> show databases;
4)、進行鎖表操作,不讓數據進行寫入動作,這麼做事爲了防止從數據庫的原始數據和主數據庫的原始數據不一致。
mysql> flush tables with read lock;
5)、查詢主數據庫狀態,並記下FILE及Position的值,這個在後面配置從服務器的時候要用到。
mysql> show master status;
6)、切換一個終端,使用mysqldump命令將剛纔查詢到的兩個庫導出來。
mysql> mysqldump –uroot –p123456 mysqltest > mysqltest.sql
mysql> mysqldump –uroot –p123456 test1234 > test1234.sql
7)、將導出來的庫文件傳送到從數據庫的/root目錄下。
[root@localhost ~]#scp mysqltest.sql test1234.sql [email protected]:/root/
這中間需要輸入一次驗證口令。見下圖
8)、切換回之前的終端,進行表解鎖操作。
mysql> unlock tables;
主數據庫服務器上的操作告一段落。
在從數據庫上操作:
1)、確保/etc/my.cnf中有log-bin=mysql-bin和server-id=1參數,並把server-id=1修改爲server-id=10。修改之後如下所示:
[mysqld]
log-bin=mysql-bin 啓動二進制文件
server-id=10 服務器ID
2)、重啓mysql服務。
[root@localhost ~]# mysqladmin -p123456 shutdown
[root@localhost ~]# mysqld_safe --user=mysql &
3)、登錄數據庫,確認要同步的庫名不存在。
[root@localhost ~]# mysql -uroot –p123456
mysql> show databases;
4)、創建名爲mysqltest和test1234的庫。
mysql> create database mysqltest;
mysql> create database test1234;
4)、切換一個終端,將傳過來的兩個數據文件分別導入對應的數據庫下。
[root@localhost ~]# mysql -uroot –p123456 mysqltest < mysqltest.sql
[root@localhost ~]# mysql -uroot –p123456 test1234 < test1234.sql
5)、切換回之前的終端,執行如下語句
mysql> change master to master_host='192.168.48.128',master_user='backup',master_password='backup',master_log_file='mysql-bin.000003',master_log_pos=1650;
5)、切換回之前的終端,執行如下語句
mysql> change master to master_host='192.168.48.128',master_user='backup',master_password='backup',master_log_file='mysql-bin.000003',master_log_pos=1650;
6)、啓動主從複製功能。
mysql> start slave;
7)、
檢查主從同步,如果您看到Slave_IO_Running和Slave_SQL_Running均爲Yes,則主從複製連接正常。
mysql> show slave status\G
驗證主從是否正常配置:
在主數據庫上插入數據:
mysql> show databases;
mysql> show tables;
mysql> use mysqltest;
mysql> select * from user;
mysql> insert into user values (4,'ergou');
mysql> insert into user values (5,'sanwazi');
在從數據庫上查看是否正常同步:
mysql> show databases;
mysql> use mysqltest;
mysql> select * from user;
上圖可以看出,主從之間已經可以正常複製了。