mysql主主-配置數據同步
一、環境
192.168.18.48 mysql1
192.168.18.49 mysql2
二,安裝配置
1.安裝mysql
tar zxf mysql-5.0.37.tar.gz
groupadd mysql ; useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql/
mkdir /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/
cd mysql-5.0.37
./configure --prefix=/usr/local/mysql/ --with-mysqld-user=mysql --with-charset=utf8 --with-extra-charsets=all --enable-thread-safe-client --with-innodb --with-unix-socket-path=/tmp/mysql.sock
make && make install
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
cd scripts/
./mysql_install_db
chown -R mysql.mysql /usr/local/mysql/
chown -R mysql.mysql /usr/local/mysql/var/
cd /usr/local/mysql/share/
./mysql/mysql.server start
/bin/cp -rp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cd /etc/init.d/
chkconfig --add mysqld
chkconfig --level 345 mysqld on
chkconfig --level 0126 mysqld off
service mysqld restart
2.配置mysql
1) 在兩臺機器上給對方授權
GRANT REPLICATION SLAVE ON *.* to 'backup'@'192.168.%' IDENTIFIED BY '123456';
flush privileges;
2)配置主配置文件
在mysql1上
[mysqld]
server-id = 10
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 1
replicate-do-db = mysqldb
在mysql2上
[mysqld]
server-id = 20
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 2
replicate-do-db = mysqldb
注:二庫都只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用來設定數據庫中自動增長的起點的,回爲這兩能服務器都設定了一次自動增長值2,所以它們的起點必須得不同,這樣才能避免兩臺服務器數據同步時出現主鍵衝突
replicate-do-db 指定同步的數據庫,我們只在兩臺服務器間同步mydb數據庫
另:auto-increment-increment的值應設爲整個結構中服務器的總數,本案例用到兩臺服務器,所以值設爲2
(這段標註是抄襲51cto好友“紅豆殺”的其主頁是http://home.51cto.com/index.php?s=/space/2517622 ^_^ 在他這學到不少東西。)
#配置完成後,重啓兩臺數據庫
service mysqld restart
3)同步兩臺數據庫
首先先在兩臺數據庫上創建要同步的數據庫
create database mysqldb;
分別在兩臺數據庫中,執行下命令,查看potion,以及binlog。(因爲我的兩臺數據庫都是新安裝的,所以binlog以及potion都一樣,如果是使用已有的數據庫,首先需要把兩臺數據庫同步,可以使用mysqldump工具。然後查看binlog,以及potion的位置。)
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 324 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
##在 mysql1 上
stop slave;
CHANGE MASTER TO master_host='192.168.18.48', master_user='backup', master_password='123456', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=324;
stop slave;
##在 mysql2 上
stop slave;
CHANGE MASTER TO master_host='192.168.18.49', master_user='backup', master_password='123456', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=324;
stop slave;
##分別查看兩臺數據庫的slave狀態。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
##都爲yes就ok了
4)驗證mysql主主
###好了現在我們來驗證吧。。。
在mysql1的mysqldb數據庫中創建表
create table haifengtest ( name varchar(15) not null, city varchar(15) not null, birth date not null);
在mysql2的mysqldb數據庫中能夠查看到該表
mysql> show tables;
+-------------------+
| Tables_in_mysqldb |
+-------------------+
| haifengtest |
+-------------------+
1 row in set (0.00 sec)
在mysql2中向表haifengtest插入數據
insert into haifengtest values ("haifeng","beijing","1986-**-**");
在mysql1中查看錶haifengtest
mysql> select * from haifengtest;
+---------+---------+------------+
| name | city | birth |
+---------+---------+------------+
| haifeng | beijing | 1986-**-** |
+---------+---------+------------+
1 row in set (0.00 sec)
###好了 第一步 mysql主主大公告成。。。。
192.168.18.48 mysql1
192.168.18.49 mysql2
二,安裝配置
1.安裝mysql
tar zxf mysql-5.0.37.tar.gz
groupadd mysql ; useradd -g mysql mysql
chown -R mysql.mysql /usr/local/mysql/
mkdir /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/
cd mysql-5.0.37
./configure --prefix=/usr/local/mysql/ --with-mysqld-user=mysql --with-charset=utf8 --with-extra-charsets=all --enable-thread-safe-client --with-innodb --with-unix-socket-path=/tmp/mysql.sock
make && make install
cp support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
cd scripts/
./mysql_install_db
chown -R mysql.mysql /usr/local/mysql/
chown -R mysql.mysql /usr/local/mysql/var/
cd /usr/local/mysql/share/
./mysql/mysql.server start
/bin/cp -rp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
cd /etc/init.d/
chkconfig --add mysqld
chkconfig --level 345 mysqld on
chkconfig --level 0126 mysqld off
service mysqld restart
2.配置mysql
1) 在兩臺機器上給對方授權
GRANT REPLICATION SLAVE ON *.* to 'backup'@'192.168.%' IDENTIFIED BY '123456';
flush privileges;
2)配置主配置文件
在mysql1上
[mysqld]
server-id = 10
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 1
replicate-do-db = mysqldb
在mysql2上
[mysqld]
server-id = 20
log-bin = mysql-bin
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 2
replicate-do-db = mysqldb
注:二庫都只有server-id不同和 auto-increment- offset不同
auto-increment-offset是用來設定數據庫中自動增長的起點的,回爲這兩能服務器都設定了一次自動增長值2,所以它們的起點必須得不同,這樣才能避免兩臺服務器數據同步時出現主鍵衝突
replicate-do-db 指定同步的數據庫,我們只在兩臺服務器間同步mydb數據庫
另:auto-increment-increment的值應設爲整個結構中服務器的總數,本案例用到兩臺服務器,所以值設爲2
(這段標註是抄襲51cto好友“紅豆殺”的其主頁是http://home.51cto.com/index.php?s=/space/2517622 ^_^ 在他這學到不少東西。)
#配置完成後,重啓兩臺數據庫
service mysqld restart
3)同步兩臺數據庫
首先先在兩臺數據庫上創建要同步的數據庫
create database mysqldb;
分別在兩臺數據庫中,執行下命令,查看potion,以及binlog。(因爲我的兩臺數據庫都是新安裝的,所以binlog以及potion都一樣,如果是使用已有的數據庫,首先需要把兩臺數據庫同步,可以使用mysqldump工具。然後查看binlog,以及potion的位置。)
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 324 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
##在 mysql1 上
stop slave;
CHANGE MASTER TO master_host='192.168.18.48', master_user='backup', master_password='123456', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=324;
stop slave;
##在 mysql2 上
stop slave;
CHANGE MASTER TO master_host='192.168.18.49', master_user='backup', master_password='123456', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=324;
stop slave;
##分別查看兩臺數據庫的slave狀態。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
##都爲yes就ok了
4)驗證mysql主主
###好了現在我們來驗證吧。。。
在mysql1的mysqldb數據庫中創建表
create table haifengtest ( name varchar(15) not null, city varchar(15) not null, birth date not null);
在mysql2的mysqldb數據庫中能夠查看到該表
mysql> show tables;
+-------------------+
| Tables_in_mysqldb |
+-------------------+
| haifengtest |
+-------------------+
1 row in set (0.00 sec)
在mysql2中向表haifengtest插入數據
insert into haifengtest values ("haifeng","beijing","1986-**-**");
在mysql1中查看錶haifengtest
mysql> select * from haifengtest;
+---------+---------+------------+
| name | city | birth |
+---------+---------+------------+
| haifeng | beijing | 1986-**-** |
+---------+---------+------------+
1 row in set (0.00 sec)
###好了 第一步 mysql主主大公告成。。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.