天天看點

mysql master host_MySQL5.5.28配置master-maser複制,master-host等參數不用了

今天在測試環境中配置兩個MySQL的複制,按照以前的方法,修改my.cnf之後啟動,報錯:

[[email protected] ~]# /etc/init.d/mysql restart

ERROR! MySQL server PID file could not be found!

Starting MySQL......................................................................................................... ERROR! The server quit without updating PID file (/var/lib/mysql/XXXX.pid).

[[email protected] ~]#

檢視log,發現下面資訊:

130418  6:15:52 [ERROR] /usr/sbin/mysqld: unknown variable 'master-host=x.x.x.x'

130418  6:15:52 [ERROR] Aborting

網上查了一下,才發現是MySQL5.5之後有了變化。有些參數不用了。官方文檔如下:

Obsolete options. The following options are removed in MySQL 5.5. If you attempt to start mysqld with any of these options in MySQL 5.5, the server aborts with an unknown variable error. To set the replication parameters formerly associated with these options, you must use the CHANGE MASTER TO ... statement (see Section 13.4.2.1, “CHANGE MASTER TO Syntax”).

The options affected are shown in this list:

--master-host

--master-user

--master-password

--master-port

--master-connect-retry

--master-ssl

--master-ssl-ca

--master-ssl-capath

--master-ssl-cert

--master-ssl-cipher

--master-ssl-key

查找的時候,發現有篇文章不錯,留作參考(原文沒有說明不給轉載啊)。原址如下:

MySQL 複制配置雙機互為主從

A B 為兩台 MySQL 伺服器,均開啟二進制日志,資料庫版本 MySQL 5.5。

在兩台伺服器上編輯配置檔案,以下配置添加到[mysqld]

一、伺服器參數

[A 伺服器 192.168.1.100]

server-id = 1

binlog-do-db = test

binlog-ignore-db = mysql

replicate-do-db = test

replicate-ignore-db = mysql

sync-binlog = 1

[B 伺服器 192.168.1.101]

server-id = 2

binlog-do-db = test

binlog-ignore-db = mysql

replicate-do-db = test

replicate-ignore-db = mysql

sync-binlog = 1

二、操作步驟

# A B 伺服器停止同步

STOP SLAVE;

# A B 伺服器清空MASTER日志

RESET MASTER;

# A B 伺服器清空SLAVE日志

RESET SLAVE;

# A 伺服器授權同步賬戶 (我們會同步一次複制資料庫檔案,是以授權為192.168.1%)

GRANT REPLICATION SLAVE ON *.* TO 'master_slave'@'192.168.1%' IDENTIFIED BY 'master_slave123!@#';

FLUSH PRIVILEGES;

# A 伺服器鎖表(鎖表狀态下不能終止mysql程序,否則會失敗)

FLUSH TABLES WITH READ LOCK;

# 如果使用SSH,需要重新開啟,複制資料庫檔案。

tar -cvf /tmp/mysql-data.tar /www/mysql

tar -xvf /tmp/mysql-data.tar -C /

# 檢視 A 伺服器主機狀态(記錄二進制開始檔案,位置)

SHOW MASTER STATUS;

# B 伺服器鎖表(鎖表狀态下不能終止mysql程序,否則會失敗)

FLUSH TABLES WITH READ LOCK;

# 修改 B 伺服器配置 (修改為A伺服器的主機狀态)

CHANGE MASTER TO MASTER_HOST='192.168.1.100',MASTER_USER='master_slave', MASTER_PASSWORD='master_slave123!@#',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=106;

# 開啟 B 伺服器同步程序

START SLAVE;

# 檢視 B 伺服器同步狀态是否正常

SHOW SLAVE STATUS;

# 檢視 B 伺服器主機(記錄二進制開始檔案,位置)

SHOW MASTER STATUS;

# 修改 A 伺服器配置 (修改為B伺服器的主機狀态)

CHANGE MASTER TO MASTER_HOST='192.168.1.101',MASTER_USER='master_slave',MASTER_PASSWORD='master_slave123!@#',MASTER_LOG_FILE='binlog.000001',MASTER_LOG_POS=106;

# 開啟 A 伺服器同步程序

START SLAVE;

# 分别檢視 A B 伺服器同步狀态,确定是否成功

SHOW SLAVE STATUS;SHOW MASTER STATUS;

# 解鎖 A B 伺服器

UNLOCK TABLES;

# 資料測試分别在 A B 伺服器上建立表插入資料測試

DROP TABLE IF EXISTS `test`;

CREATE TABLE `test` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`value` varchar(100) DEFAULT '0',

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

INSERT INTO `test` VALUES ('1', 'Hello');

注意:

1. 資料庫目錄下的master.info的内容會覆寫指令行或my.cnf中指定的部分選項,更改配置需删除master.info

2. my.cnf中的master配置在MySQL 6.0以後會取消,官方建議使用動态的CHANGE MASTER

3. 如果隻指定ignore-db而不指定do-db。則新建立資料庫的操作也會同步。

互為同步配置執行個體:

1. A B 互為主從同步test, 不同步mysql:

兩個資料庫配置中均設定:binlog-do-db=test, binlog-ignore-db=mysql,replicate-do-db=test,replicate-ignore-db=mysql

2. A B 互為主從隻同步test,不同步其他資料庫,新建立的也不會同步

兩個資料庫配置中均設定:binlog-do-db=test,replicate-do-db=test

3. A B 互為主從不同步mysql, 同步其他資料庫,譬如建立的新資料庫也會同步

兩個資料庫配置中均設定:binlog-ignore-db=mysql,replicate-ignore-db=mysql

4. A B 互為主從同步所有資料庫,包括建立的資料庫 兩個資料庫配置中均不設定上述四項。