mysql的master slave_MySQL Master Slave

mysql master-slave (Replication)配置笔记

感触最深的是:细节决定成败,尤其在Linux下配置服务。

Master:

系统 fedora8

数据库

-————-

| version() |

-————-

| 5.0.45-log |

-————-

Ip:172.20.92.108

Slave:

系统 CentOs 5

数据库

-————-

| version() |

-————-

| 5.0.45-log |

-————-

Ip:172.20.92.110

测试数据库:test

网上说:从机(Slave)的数据库版本不能低于主机(Master)的版本。

主机Master配置文件/etc/my.cnf

[root@gkx bin]# more /etc/my.cnf

[mysqld]

server_id=1 ##主机id 不能和从机id重复

log-bin=/var/log/mysql/mysql-bin.index ##主机日志文件

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

set-variable=replicate-do-db=tencent

##主从复制配置时,该选项表明只复制tencent数据库,由于当前是主机,所以该选项没有意义

user=mysql

Default to using old password format for compatibility with mysql 3.x

clients (those using the mysqlclient10 compatibility package).

old_passwords=1

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

从机Slave配置文件:/etc/my.cnf

[root@wsc mysqld]# more /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

log_slow_queries=/var/log/mysql/slow.log

long_query_time = 1

log_long_format

log-queries-not-using-indexes

Default to using old password format for compatibility with mysql 3.x

clients (those using the mysqlclient10 compatibility package).

old_passwords=1

server-id = 2 ##从机id,区别于主机id

master-host = 172.20.92.108 ##主机ip,供从机连接主机用

master-user=slave ##刚才为从机复制主机数据新建的账号

master-password=slave ##密码

master-port=3306

log-slave-updates

log-bin =/var/log/mysql/mysql-bin.index

##从机日志文件,区别于中继日志(Slave自行调用,更新主机数据时查询的日志)

log=/var/log/mysql/log.log

back_log = 50

max_connections = 100

max_connect_errors = 10

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

一定要仔细查看从机配置文件中以下所列参数:

#启用从库日志,这样可以进行链式复制

log-slave-updates

从库是否只读,0表示可读写,1表示只读

read-only=1

#只复制某个表

replicate-do-table=tablename

##我的这次配置就是无意中限制了只能复制某一数据库导致失败的

#只复制某些表(可用匹配符)

replicate-wild-do-table=tablename%

只复制某个库

replicate-do-db=dbname

#只复制某些库

replicte-wild-do-db=dbname%

不复制某个表

replicate-ignore-table=tablename

#不复制某些表

replicate-wild-ignore-table=tablename%

不复制某个库

replicate-ignore-db=dbname

下面是具体配置过程:

Master:

1. 为从机(Slave)创建一个复制权限账户

mysql > GRANT REPLICATION SLAVE ON . TO ’slave’@’172.20.92.110’ IDENTIFIED BY ‘slave’;

Ps:replication slave 为单一的复制权限 用户名slave 密码slave

2.锁定主机数据库 导出当前锁定状态下所有数据到从机中 做好复制前的基本数据同步工作

mysql > FLUSH TABLES WITH READ LOCK;

mysql > exit

[root@%%] # mysqldump uroot -p test > test.sql

3.查询当前主机数据库文件和位置

mysql > show master status;

-————————-———-———————-———————-

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

-———————-—————-—————-—————————+

| mysql-bin.000041 | 1509 | | |

-———————-—————-—————-—————————+

Ps:记录下这两个值(文件名、当前位置),一会儿配置从机连接主机时要用到。

Slave:

1.创建数据库 test ,将主机Master生成的sql文件导入到test数据库中。

2.关掉Slave,将主机日志文件和位置信息读入从机

mysql > stop slave;

mysql > change master to

→master_log_file=‘mysql-bin.000041’,

→master_log_pos=1509;

mysql > start slave;

mysql > show slave status \G

mysql> show slave status\G;

1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 172.20.92.108 ##主机ip

Master_User: slave ##复制账号

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000041 ##主机日志文件

Read_Master_Log_Pos: 1509 ##主机日志文件位置

Relay_Log_File: mysqld-relay-bin.000007 ##从机中继日志文件

Relay_Log_Pos: 235 ##中继日志文件位置

Relay_Master_Log_File: mysql-bin.000041

Slave_IO_Running: Yes ##从机IO线程 连接主机

Slave_SQL_Running: Yes ##从机sql线程 处理更新的日志

Replicate_Do_DB:

Replicate_Ignore_DB:

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: 1509

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: 0

1 row in set (0.00 sec)

接下来,解锁Master,允许主机数据库更新。

Master:

mysql > unlock tables;

最后,测试一下:在主机Master数据库中insert、delete、update若干记录,从机会将操作同步下来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值