mysql主从配置

1.配置MASTER
修改主数据库/etc/my.cnf,注意位置,在mysqld下面,不要添加到safe下面

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1

max_connections=10000
join_buffer_size = 64M
read_buffer_size = 128M
key_buffer = 512M
open-files-limit = 28196
query_cache_type=2
query_cache_size = 32M
tmp_table_size = 1024M
long_query_time=2
log-slow-queries = /var/log/mysql/slowquery.log

#以下开始是主从配置
server-id=1 #主库一般是1,从库写别的,不重复就行
log-bin=my_binglog #开启日志记录,这样就可以支持主从了
log_bin=/var/log/mysql/mysql-bin.log
expire_logs_days=10
max_binlog_size=100M
binlog_do_db=shop #需要被分发的主数据库名
binlog_ignore_db=test #不需要被分发的主数据库名
#主从配置结束

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

binlog_do_db为需要复制的db。 binlog_ignore_db为忽略复制的db。需要增加DB的话,就增加相应的一行。
2.重启master数据库,运行检查

mysql> show master status; #检查是否以master形式启动了。

注意记录下以下内容:
master_log_file主库当前的日志文件
master_log_pos主库的日志文件偏移量

mysql> show variables like "%log%";
#需要看到这样的一行,说明binlog已经开启了: log_bin | ON

3.在master上为slave建立用户
mysql> grant replication slave, reload, super on *.* to 'slave'@'%' identified by '123456';
这样,主机配置完毕。
4.将主服务器数据 copy 过来
master用mysqldump导出
slave建好同名数据库,导入
5.配置slave,编辑从库的/etc/my.cnf

server-id=2 #唯一
#设置要进行或不要进行主从复制的数据库名,同时也要在Master 上设定。
replicate-do-db=shop

然后登录从库,执行从库配置命令

CHANGE master TO master_host='192.168.1.109', master_port=3306, master_user='slave', master_password='123456', master_log_file='my_binglog.000001', master_log_pos=107;

master_host主库的ip
master_post主库的端口
master_user登录主库的用户名
master_password不解释
master_log_file主库当前的日志文件
master_log_pos主库的日志文件偏移量
此处的master_log_file和master_log_pos需要从主库上核对,用show master status核对。
6.启动slave, 检查salve状态

slave:mysql> slave sart;
slave:mysql> show slave status;
#很多很多列,会显示slave的状态

7.完毕,在主数据库进行增删修改,看从数据库是否有更新。

从以上内容可以得之,主从实际是基于bin-log的sql
start slave后,从库会从主库获取position中偏移量之后的sql,然后到从库上执行。
所以只要从库导入了主库的sql,并且记住导出时候的偏移量,数据就能同步了。

为了防止在导出数据库的过程中,数据库还有写入操作,导致偏移量计算不准确,可以使用按照以下步奏处理。锁定表-导出-解锁
mysql> FLUSH TABLES WITH READ LOCK;
获取偏移位置
导出数据
mysql> UNLOCK TABLES;

简单总结如下:

//清空表缓存并且锁住表
mysql>flush tables with read lock;
//查看binlog并记录下来
mysql>show master status\G;
file+position就是slave复制的起点
//备份数据库
$mysqldump --all-databases --host=master>backup.sql
//解除数据库锁定
mysql>unlock tables;
//slave恢复备份
mysql --host=slave < backup.sql
//启动slave
mysql>change master to master_host='master',master_port=3306,master_user='***',master_password='***',master_log_file='file',master_log_pos='position'
mysql>start slave;


源自:http://www.luochunhui.com/id/550
http://www.d5s.cn/archives/95
http://dev.mysql.com/doc/refman/5.1/zh/replication.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值