mysqld_multi实现多主一从复制
2013-03-24 14:36
323 查看
目的:两台主mysql数据库复制到一台从mysql 服务器上
两台主库的ip为
172.16.27.23
172.16.27.25
一台从库的ip为
172.16.27.21
1. 在两台主库的配置文件内加入下面几条,两台都要加
server-id = 1
log-bin =
mysql-bin
binlog_format=mixed
2.
加完后保存退出,登录两台数据库建立用来同步的用户并给他授权
GRANT REPLICATION SLAVE ON * . * TO 'REPL' @ '
172.16.27.21' IDENTIFIED BY '123456';
做完授权后,重新启动mysql
,查看binlog 是否已经开始生效
3. 然后在两台主mysql数据库锁表 并记录
pos值和当前的binlog文件
172.16.27.23:
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0
rows affected (0.00 sec)
mysql> SHOW MASTER
STATUS;
+------------------+----------+--------------+------------------+
|
File | Position | Binlog_Do_DB | Binlog_Ignore_DB
|
+------------------+----------+--------------+------------------+
|
mysql-bin.000070 | 217643
| | |
+------------------+----------+--------------+------------------+
1
row in set (0.00 sec)
172.16.27.25:
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0
rows affected (0.00 sec)
mysql> SHOW MASTER
STATUS;
+---------------+----------+--------------+------------------+
|
File | Position | Binlog_Do_DB | Binlog_Ignore_DB
|
+---------------+----------+--------------+------------------+
|
binlog.000002 | 13407
| | |
+---------------+----------+--------------+------------------+
1
row in set (0.00 sec)
4. 用mysqldump
或者其他方法将要同步的两台主mysql数据库导出 。
5. 修改从库的my.cnf 配置文件
[mysqld_multi]
mysqld =
/usr/local/mysql/bin/mysqld_safe
mysqladmin =
/usr/local/mysql/bin/mysqladmin
user =
root
password =123456
log =
/usr/local/mysql/mysqld_multi.log
[mysqld1]
port =
3307
socket = /tmp/mysql.sock1
skip-locking
key_buffer_size =
384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size =
2M
read_buffer_size = 2M
read_rnd_buffer_size =
8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size
= 32M
thread_concurrency = 8
pid-file =
/usr/local/mysql/data1/mysqld1.pid
datadir =
/usr/local/mysql/data1
log
=/usr/local/mysql/data1/mysql_multi_1.log
user =
mysql
log-bin = mysql1-bin
server-id = 2
master-host
= 172.16.27.23
master-port = 3306
master-user =
repl
master-password = 123456
replicate-do-db = product
binlog_format
= mixed
[mysqld2]
port = 3308
socket =
/tmp/mysql.sock2
skip-locking
key_buffer_size = 384M
max_allowed_packet
= 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size =
2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size =
64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency =
8
pid-file = /usr/local/mysql/data2/mysqld2.pid
datadir
= /usr/local/mysql/data2
log
=/usr/local/mysql/data2/mysql_multi_2.log
user =
mysql
log-bin = mysql2-bin
server-id = 3
master-host
= 172.16.27.25
master-port = 3306
master-user =
repl
master-password = 123456
replicate-do-db = my_blog
binlog_format
= mixed
6.初始化数据库
/usr/local/mysql/bin/mysql_install_db
--datadir=/usr/local/mysql/data1 --user=mysql
&
/usr/local/mysql/bin/mysql_install_db --datadir=/usr/local/mysql/data2
--user=mysql &
7. 启动mysql ,这时就不能按照以前那样启动了,现在启动时候需要
mysqld_multi这个程序 具体做法如下
/usr/local/mysql/bin/mysqld_multi
--config-file=/etc/my.cnf start 1-2
/usr/local/mysql/bin/mysqld_multi
--config-file=/etc/my.cnf start 1,2
这样也可以
8.下一步就是要导入数据库了,不过要先登录mysql建立数据库
mysql -u root -S /tmp/mysql.sock1
mysql> create
database product;
mysql>exit
mysql -u root -S /tmp/mysql.sock1 produt
< /root/product.sql
mysql -u root -S /tmp/mysql.sock2
mysql>
create database my_blog;
mysql>exit
mysql -u root -S /tmp/mysql.sock2
produt < /root/my_blog.sql
9 .重启两个mysql
/usr/local/mysql/bin/mysqld_multi
--config-file=/etc/my.cnf report 1,2
10
.重启后分别进入两个进程来启动同步。
两台主库的ip为
172.16.27.23
172.16.27.25
一台从库的ip为
172.16.27.21
1. 在两台主库的配置文件内加入下面几条,两台都要加
server-id = 1
log-bin =
mysql-bin
binlog_format=mixed
2.
加完后保存退出,登录两台数据库建立用来同步的用户并给他授权
GRANT REPLICATION SLAVE ON * . * TO 'REPL' @ '
172.16.27.21' IDENTIFIED BY '123456';
做完授权后,重新启动mysql
,查看binlog 是否已经开始生效
3. 然后在两台主mysql数据库锁表 并记录
pos值和当前的binlog文件
172.16.27.23:
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0
rows affected (0.00 sec)
mysql> SHOW MASTER
STATUS;
+------------------+----------+--------------+------------------+
|
File | Position | Binlog_Do_DB | Binlog_Ignore_DB
|
+------------------+----------+--------------+------------------+
|
mysql-bin.000070 | 217643
| | |
+------------------+----------+--------------+------------------+
1
row in set (0.00 sec)
172.16.27.25:
mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0
rows affected (0.00 sec)
mysql> SHOW MASTER
STATUS;
+---------------+----------+--------------+------------------+
|
File | Position | Binlog_Do_DB | Binlog_Ignore_DB
|
+---------------+----------+--------------+------------------+
|
binlog.000002 | 13407
| | |
+---------------+----------+--------------+------------------+
1
row in set (0.00 sec)
4. 用mysqldump
或者其他方法将要同步的两台主mysql数据库导出 。
5. 修改从库的my.cnf 配置文件
[mysqld_multi]
mysqld =
/usr/local/mysql/bin/mysqld_safe
mysqladmin =
/usr/local/mysql/bin/mysqladmin
user =
root
password =123456
log =
/usr/local/mysql/mysqld_multi.log
[mysqld1]
port =
3307
socket = /tmp/mysql.sock1
skip-locking
key_buffer_size =
384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size =
2M
read_buffer_size = 2M
read_rnd_buffer_size =
8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size
= 32M
thread_concurrency = 8
pid-file =
/usr/local/mysql/data1/mysqld1.pid
datadir =
/usr/local/mysql/data1
log
=/usr/local/mysql/data1/mysql_multi_1.log
user =
mysql
log-bin = mysql1-bin
server-id = 2
master-host
= 172.16.27.23
master-port = 3306
master-user =
repl
master-password = 123456
replicate-do-db = product
binlog_format
= mixed
[mysqld2]
port = 3308
socket =
/tmp/mysql.sock2
skip-locking
key_buffer_size = 384M
max_allowed_packet
= 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size =
2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size =
64M
thread_cache_size = 8
query_cache_size = 32M
thread_concurrency =
8
pid-file = /usr/local/mysql/data2/mysqld2.pid
datadir
= /usr/local/mysql/data2
log
=/usr/local/mysql/data2/mysql_multi_2.log
user =
mysql
log-bin = mysql2-bin
server-id = 3
master-host
= 172.16.27.25
master-port = 3306
master-user =
repl
master-password = 123456
replicate-do-db = my_blog
binlog_format
= mixed
6.初始化数据库
/usr/local/mysql/bin/mysql_install_db
--datadir=/usr/local/mysql/data1 --user=mysql
&
/usr/local/mysql/bin/mysql_install_db --datadir=/usr/local/mysql/data2
--user=mysql &
7. 启动mysql ,这时就不能按照以前那样启动了,现在启动时候需要
mysqld_multi这个程序 具体做法如下
/usr/local/mysql/bin/mysqld_multi
--config-file=/etc/my.cnf start 1-2
/usr/local/mysql/bin/mysqld_multi
--config-file=/etc/my.cnf start 1,2
这样也可以
8.下一步就是要导入数据库了,不过要先登录mysql建立数据库
mysql -u root -S /tmp/mysql.sock1
mysql> create
database product;
mysql>exit
mysql -u root -S /tmp/mysql.sock1 produt
< /root/product.sql
mysql -u root -S /tmp/mysql.sock2
mysql>
create database my_blog;
mysql>exit
mysql -u root -S /tmp/mysql.sock2
produt < /root/my_blog.sql
9 .重启两个mysql
/usr/local/mysql/bin/mysqld_multi
--config-file=/etc/my.cnf report 1,2
10
.重启后分别进入两个进程来启动同步。
相关文章推荐
- 利用mysqld_multi快速实现多主复制~~~ 推荐
- 巧用mysqld_multi实现多主对一从的mysql复制 推荐
- mysqld_multi实现单机主从复制
- 巧用mysqld_multi实现多主对一从的mysql复制
- Paxos 实现日志复制同步(Multi-Paxos) - Richaaaard - 博客园
- 使用mysqld_multi实现单系统中配置多个MySQL服务器实例
- mysql中利用mysqld_multi实现单机多实例
- MySQL单机多实例部署详解之------利用mysqld_multi配置实现
- MySQL单机多实例部署详解之------利用mysqld_multi配置实现
- 巧用mysqld_multi实现多主对一从的mysql复制
- 二进制包中mysqld_multi实现单主机多实例及slave
- Paxos 实现日志复制同步(Multi-Paxos)
- 使用mysqld_multi实现单系统中配置多个MySQL服务器实例
- 通过官方自带的mysqld_multi来实现mysql多实例
- mysqld_multi实现多主一从同步
- MySQL主从复制的实现过程
- jQuery+layer+clipboard实现复制到剪贴板的功能,兼容各大主流浏览器
- Linux下的MySQL主主复制和Mysql-MMM实现(Mysql双主多从高可用)
- Javascript 复制数组实现代码
- 利用SQLServer2005复制功能实现与Oracle数据库同步