mysql 主主
2013-11-18 15:08
232 查看
环境说明: 系统 主机名 IP mysql版本Cenots 5.8 mysql-m1 192.168.3.173 5.0.95Cenots 5.8 mysql-m2 192.168.3.178 5.0.951.首先安装mysql,为了方便,使用yum安装。(两台都要装)[root@localhost ~]# yum install mysql mysql-server mysql-devel2.启动mysql2.1:先初始化mysql表 ------两台都要做[root@mysql-m2 ~]# mysql_install_db [root@mysql-m2 ~]# /etc/init.d/mysqld startStarting mysqld: [ OK ]3.创建同步的数据库和同步的用户 //两台都要做3.1:创建数据库mysql> create database test_db; Query OK, 1 row affected (0.11 sec)
mysql> flush privileges; // 刷新系统权限表Query OK, 0 rows affected (0.01 sec)3.2:创建同步用的用户mysql> insert into mysql.user(Host,User,Password) values('localhost','rsync',password='123456');Query OK, 1 row affected, 3 warnings (0.02 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)3.3:授权用户能进行远程登陆mysql> grant all privileges on test_db.* to 'rsync'@'%' identified by '123456';Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)
3.4:授权能打开复制进程mysql> grant replication slave on *.* to 'rsync'@'%' identified by '123456';Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)4.修改my.cnf文件 //两台都要做在mysql上修改my.cnf文件[root@mysql-m1 ~]# vim /etc/my.cnf在mysqld中配置/添加:binlog-do-db=test_dbbinlog-ignore-db=mysqlreplicate-do-db=test_dbreplicate-ignore-db=mysql,information_schema,testlog-slave-updatessync_binlog=1auto_increment_offset=1auto_increment_increment=2slave-skip-errors=all这里注意配置server-id的值,不同即可。配置完成后重启mysql/etc/init.d/mysqld restart5.锁表 //两台都要做mysql> flush tables with read lock;Query OK, 0 rows affected (0.00 sec)
6.查看这两台机器作为主服务器的状态//mysql-m1:mysql> show master status\G;*************************** 1. row *************************** File: mysql-bin.000009 Position: 98 Binlog_Do_DB: test_dbBinlog_Ignore_DB: mysql1 row in set (0.00 sec)//mysql-m2:mysql> show master status\G;*************************** 1. row *************************** File: mysql-bin.000002 Position: 98 Binlog_Do_DB: test_dbBinlog_Ignore_DB: mysql1 row in set (0.00 sec)
7.使用change master语句指定同步位置//mysql-m1:mysql> change master to master_host='192.168.3.178', -> master_user='rsync', -> master_password='123456', -> master_log_file='mysql-bin.000002', -> master_log_pos=98;Query OK, 0 rows affected (0.03 sec)
//mysql-m2:mysql> change master to master_host='192.168.3.173', -> master_user='rsync', -> master_password='123456', -> master_log_file='mysql-bin.000009', -> master_log_pos=98 -> ;Query OK, 0 rows affected (0.08 sec)
8.打开表//mysql-m1:mysql> unlock tables;Query OK, 0 rows affected (0.00 sec)//mysql-m2:mysql> unlock tables;Query OK, 0 rows affected (0.00 sec)
9.分别启动从服务器线程//mysql-m1:mysql> start slave;Query OK, 0 rows affected (0.01 sec)//mysql-m2:mysql> start slave;Query OK, 0 rows affected (0.01 sec)
10.查看从服务器状态://mysql-m1:mysql> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.3.178 Master_User: rsync Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 98 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test_db Replicate_Ignore_DB: mysql,information_schema,test Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 01 row in set (0.00 sec)//mysql-m2:mysql> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.3.173 Master_User: rsync Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000009 Read_Master_Log_Pos: 98 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000009 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test_db Replicate_Ignore_DB: mysql,information_schema,test Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 01 row in set (0.00 sec)
11.测试。//mysql-m1:创建表,并插入数据mysql> use test_db;Database changedmysql> create table test_db(id int(3),name char(10),age char(8));Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
mysql> insert into test_db values(001,'baofeng','31');Query OK, 1 row affected (0.02 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)
mysql> select * from test_db;+------+---------+------+| id | name | age |+------+---------+------+| 1 | baofeng | 31 | +------+---------+------+1 row in set (0.00 sec)//mysql-m2查看:mysql> use test_db;Database changedmysql> show tables; +-------------------+| Tables_in_test_db |+-------------------+| test_db | +-------------------+1 row in set (0.01 sec)
mysql> select * from test_db;+------+---------+------+| id | name | age |+------+---------+------+| 1 | baofeng | 31 | +------+---------+------+1 row in set (0.00 sec)
大家知道,mysql主从,从库进行操作是无法同步主库的。现在在mysql-m2上进行删除操作:mysql> delete from test_db;Query OK, 1 row affected (0.00 sec)
mysql> show tables;+-------------------+| Tables_in_test_db |+-------------------+| test_db | +-------------------+1 row in set (0.00 sec)
//mysql-m1查看mysql> select * from test_db;Empty set (0.00 sec)
Import:这里有个很重要的点,如果mysql要做主主同步的库不为空,最好先停库导数据,然后锁表防止数据写入,在另外一个库上将数据导入
成功之后,然后解锁表,再进行slave复制同步操作。
本文出自 “tring” 博客,转载请与作者联系!
mysql> flush privileges; // 刷新系统权限表Query OK, 0 rows affected (0.01 sec)3.2:创建同步用的用户mysql> insert into mysql.user(Host,User,Password) values('localhost','rsync',password='123456');Query OK, 1 row affected, 3 warnings (0.02 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)3.3:授权用户能进行远程登陆mysql> grant all privileges on test_db.* to 'rsync'@'%' identified by '123456';Query OK, 0 rows affected (0.03 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)
3.4:授权能打开复制进程mysql> grant replication slave on *.* to 'rsync'@'%' identified by '123456';Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)4.修改my.cnf文件 //两台都要做在mysql上修改my.cnf文件[root@mysql-m1 ~]# vim /etc/my.cnf在mysqld中配置/添加:binlog-do-db=test_dbbinlog-ignore-db=mysqlreplicate-do-db=test_dbreplicate-ignore-db=mysql,information_schema,testlog-slave-updatessync_binlog=1auto_increment_offset=1auto_increment_increment=2slave-skip-errors=all这里注意配置server-id的值,不同即可。配置完成后重启mysql/etc/init.d/mysqld restart5.锁表 //两台都要做mysql> flush tables with read lock;Query OK, 0 rows affected (0.00 sec)
6.查看这两台机器作为主服务器的状态//mysql-m1:mysql> show master status\G;*************************** 1. row *************************** File: mysql-bin.000009 Position: 98 Binlog_Do_DB: test_dbBinlog_Ignore_DB: mysql1 row in set (0.00 sec)//mysql-m2:mysql> show master status\G;*************************** 1. row *************************** File: mysql-bin.000002 Position: 98 Binlog_Do_DB: test_dbBinlog_Ignore_DB: mysql1 row in set (0.00 sec)
7.使用change master语句指定同步位置//mysql-m1:mysql> change master to master_host='192.168.3.178', -> master_user='rsync', -> master_password='123456', -> master_log_file='mysql-bin.000002', -> master_log_pos=98;Query OK, 0 rows affected (0.03 sec)
//mysql-m2:mysql> change master to master_host='192.168.3.173', -> master_user='rsync', -> master_password='123456', -> master_log_file='mysql-bin.000009', -> master_log_pos=98 -> ;Query OK, 0 rows affected (0.08 sec)
8.打开表//mysql-m1:mysql> unlock tables;Query OK, 0 rows affected (0.00 sec)//mysql-m2:mysql> unlock tables;Query OK, 0 rows affected (0.00 sec)
9.分别启动从服务器线程//mysql-m1:mysql> start slave;Query OK, 0 rows affected (0.01 sec)//mysql-m2:mysql> start slave;Query OK, 0 rows affected (0.01 sec)
10.查看从服务器状态://mysql-m1:mysql> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.3.178 Master_User: rsync Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 98 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test_db Replicate_Ignore_DB: mysql,information_schema,test Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 01 row in set (0.00 sec)//mysql-m2:mysql> show slave status\G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.3.173 Master_User: rsync Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000009 Read_Master_Log_Pos: 98 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000009 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test_db Replicate_Ignore_DB: mysql,information_schema,test Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 235 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 01 row in set (0.00 sec)
11.测试。//mysql-m1:创建表,并插入数据mysql> use test_db;Database changedmysql> create table test_db(id int(3),name char(10),age char(8));Query OK, 0 rows affected (0.04 sec)
mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
mysql> insert into test_db values(001,'baofeng','31');Query OK, 1 row affected (0.02 sec)
mysql> flush privileges;Query OK, 0 rows affected (0.01 sec)
mysql> select * from test_db;+------+---------+------+| id | name | age |+------+---------+------+| 1 | baofeng | 31 | +------+---------+------+1 row in set (0.00 sec)//mysql-m2查看:mysql> use test_db;Database changedmysql> show tables; +-------------------+| Tables_in_test_db |+-------------------+| test_db | +-------------------+1 row in set (0.01 sec)
mysql> select * from test_db;+------+---------+------+| id | name | age |+------+---------+------+| 1 | baofeng | 31 | +------+---------+------+1 row in set (0.00 sec)
大家知道,mysql主从,从库进行操作是无法同步主库的。现在在mysql-m2上进行删除操作:mysql> delete from test_db;Query OK, 1 row affected (0.00 sec)
mysql> show tables;+-------------------+| Tables_in_test_db |+-------------------+| test_db | +-------------------+1 row in set (0.00 sec)
//mysql-m1查看mysql> select * from test_db;Empty set (0.00 sec)
Import:这里有个很重要的点,如果mysql要做主主同步的库不为空,最好先停库导数据,然后锁表防止数据写入,在另外一个库上将数据导入
成功之后,然后解锁表,再进行slave复制同步操作。
本文出自 “tring” 博客,转载请与作者联系!
相关文章推荐
- MySQL主主复制+keepalived打造高可用MySQL集群
- mysql主主备份及集群
- MySQL主从复制、半同步和主主复制的实现
- MySQL双主(主主)架构方案
- 利用Keepalived构建MySQL主主复制
- mysql高可用架构方案之一(keepalived+主主双活)
- 运维工程师必备之MySQL数据的主从复制、半同步复制和主主复制详解
- mysql高可用探究(二)Lvs+Keepalived+Mysql单点写入主主同步高可用方案
- 【MySQL】MySQL搭建主主复制(双主复制/DUAL Master)环境
- 带从服务器的MySql主主复制之一
- MySQL主主同步
- mysql5.5主主复制架构
- MySQL主从复制与主主复制
- [bigdata-60]mysql的高可用主主同步复制及其在阿里云上的实践
- mysql高可用方案之主主架构(master-master)
- 学一点 mysql 双机异地热备份—-mysql主从,主主备份原理及实践
- mysql主主复制+keepalived高可用(使用VIP访问数据库提示不允许连接)
- 测试mysql主主切换是否丟数据
- MySQL-5.7.10主主同步的安装和配置
- 用Mysql+HeartBeat实现MYSQL主主自动切换来保证网站不中断服务(上)