`
wgllz
  • 浏览: 110246 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Linux下mysql主从同步备份master-slave详细配置

阅读更多

1、概要
首先要准备两台服务器,一台主服务器(Master),另一台从服务器(Slave),然后要保证Master与Slave的版本要相同且Master不能高于Slave的版本,一般稳健的做法都是使其版本相同,因为MySQL不同版本之间的binlog(二进制日志)格式可能会不一样,最后会导致同步出现异常。介绍先到这里,以下我们先确认两台服务器的信息:

主服务器(Master):
IP:192.168.1.100
系统:Linux(Ubuntu 64位 v10.10)
MySQL版本:5.1.49
需要同步的数据库名:myslave
用于同步的帐号:slave001
用于同步的密码:timescode888

————————————–

从服务器(Slave)
IP:192.168.1.90
系统:Linux(Ubuntu 32位 v10.10)
MySQL版本:5.1.49
需要同步的数据库名:myslave

注:以下的配置以及测试都是使用SSH来进行的

2、修改Master服务器的配置

#打开my.cnf配置文件

vi /etc/mysql/my.cnf

#键入 /server-id 找到server-id的位置,把以下内容对照设置进去,键入 i,激活输入状态
#注意,这里的Master与Slave的server-id不能相同

server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
binlog_do_db            = myslave #如果需要同时同步多个数据库,请另起一行设置binlog_do_db=需要同步的数据库名称
binlog_ignore_db        = mysql

3、在Master建立myslave数据库并建立相关的数据表,SQL代码如下

#建立数据库
mysql -u root -p

mysql> CREATE DATABASE myslave CHARSET ‘utf8′;

#建立数据表
– —————————-
– Table structure for `users`
– —————————-
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`website` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

– —————————-
– Table structure for `users_log`
– —————————-
DROP TABLE IF EXISTS `users_log`;
CREATE TABLE `users_log` (
`user_log_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`info` varchar(200) DEFAULT NULL,
`uid` mediumint(8) unsigned NOT NULL,
PRIMARY KEY (`user_log_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

4、建立用于replication的帐号
grant replication slave on *.* to myslave001@’%’ identified by ‘timescode888′;
quit
#重启服务器
/etc/init.d/mysql restart

#进入mysql查看有没有生效
mysql -u root -p

mysql> show master status;
+——————+———-+————–+——————+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000001 |      106 | myslave      | mysql            |
+——————+———-+————–+——————+

#以上可以看出跟在my.cnf里设置的是一致的,在此要记下File以及Position的值,后面在Slave服务器上会用到

5、使用mysqldump导出Master中的myslave数据库

#在此必须要加入–master-data选项,保证在dump时会记录到binlog名称和偏移值
#而使用–lock-all-tables的原因就是为了数据在导出的时候没有其它新数据插入,保证一致性

mysqldump –master-data=1 –lock-all-tables=true -uroot -pwww.timescode.com myslave > /home/myslave_bak_20110326.sql

#具体的根据实际情况而变化,不一定要使用root帐号来导出数据

6、使用sz命令下载备份文件
sz /home/myslave_bak_20110326.sql

7、修改Slave服务器的配置

#具体的路径以及版本都与Master服务器一样
vi /etc/mysql/my.cnf

#请对照设置,如下
server-id        = 2
master-host        = 192.168.1.100
master-user        = myslave001
master-password        = timescode888
master-port        = 3306
master-connect-retry    = 5
replicate-do-db        = myslave
replicate-ignore-db    = mysql

8、使用rz命令上传备份文件到Slave服务器
rz
#当弹出选项框后选取刚才下载的备份文件
#把文件上传到home目录,具体的你可以根据你实际环境来操作

9、建立数据库并导入备份数据
mysql -u root -p

mysql> CREATE DATABASE myslave CHARSET ‘utf8′;
mysql> use myslave;
mysql> source /home/myslave_bak_20110326.sql;

#查看有没有导入成功
mysql> show tables;
+——————-+
| Tables_in_myslave |
+——————-+
| users             |
| users_log         |
+——————-+
2 rows in set (0.00 sec)

#由于刚才没有重启mysql,先需要退出去重启一下
mysql> quit

10、重启Slave服务器上的mysql
/etc/init.d/mysql restart
mysql -u root -p

#配置Slave信息并启动Slave服务
mysql> CHANGE MASTER TO
-> MASTER_HOST=’192.168.1.100′,
-> MASTER_USER=’myslave001′,
-> MASTER_PASSWORD=’timescode888′,
-> MASTER_LOG_FILE=’mysql-bin.000001′,
-> MASTER_LOG_POS=106;

#以上的是关键,具体的MASTER_LOG_FILE以及MASTER_LOG_POS的数据,可以从Master服务器获得,如果不设置,将无法正常启动Slave服务
#启动Slave服务
mysql> start slave;

#查看同步状态
mysql> show slave status;

#当输入命令后会出现一大堆的状态,具体的看Slave_IO_Running以及Slave_SQL_Running的状态,如果都是Yes就代表正常
#然后还可以看到Slave_IO_State的状态是Waiting for master to send event,含义是等待Master服务器发送事件

11、测试同步
#在Master服务器插入一条数据
mysql> use myslave;
mysql> INSERT INTO users(‘username’,'website’) VALUES(‘edison’,'http://www.timescode.com’);

#插入成功之后,稍等片刻,就可以在Slave服务器上查看到相同记录
#如果插入不成功,放心,你可以再仔细检查一下本配置文档,是否有那一步有遗漏或没正确配置。

12、后述
#如果想要查看当前Slave服务器的同步状态及偏移值等信息,请查找master.info文件

more /var/lib/mysql/master.info

#查看Slave执行binlog文件的情况
more /var/lib/mysql/relay-log.info

#如果对本文有疑问或建议请给我留言。

Mysql 主从服务与集群的区别

在Mysql Master/Slave 模式备份中(Mysql 4以上提供),
Slave主要是来备份数据的,只有当Master出现故障时,Slave才会接过Master的服务,
对外部请求进行处理,直到Master恢复正常。
就是说,在Master/Slave中,要么是Master在服务,要么是Slave在服务,不会Master/Slave同时提供服务。
而在Mysql cluster中(mysql 5 以上提供基于内存交换数据的cluster),
是Cluster的各个mysql服务在同时对外处理请求,这种模式性能更高,
同时各个集群节点的数据是基于内存进行互备的。
在Mysql 5 的 cluster中,会同时存在两份相同的数据,一份是基于硬盘的,是存储本地数据库实例的数据的,
另外一份是基于内存的,用于与集群中的其他节点进行数据同步的。
相对来说,对系统的开销会大一些,而且不能适应于大数据量的应用环境中,因为受到系统内存的限制。
分享到:
评论

相关推荐

    Mysql主从同步备份策略

    Mysql主从同步备份策略 五月 18th, 2009 at 17:30 - 3,803 views 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # ...

    joeywang310#mysql-master-slave#Mysql主从复制集群搭建-基于DockerCompose1

    如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致slave mysql容器配置配置Dockerfile设置server_id,一般设置为

    Mysql主从复制(master-slave)实际操作案例

    主要介绍了Mysql主从复制(master-slave)实际操作案例,同时介绍了Mysql grant 用户授权的相关内容,需要的朋友可以参考下

    docker安装mysql主从.txt

    使用allen老师的hub镜像制作自己的mysql主从 --------- docker pull xiaochunping/mysql-master; docker pull xiaochunping/mysql-slave; -- cnetos docker run ,把my.cnf和data数据引入到属主机 -----------------...

    Mysql-master-slave.rar_Master/Slave_slave mysql

    mysql master-slave 主从配置的讲解

    windows主从同步

    mysql数据库windows下mysql主从同步备份步骤 haha_yong2人评论2507人阅读2010-04-29 11:13:54 windows下mysql主从同步备份步骤 A:主服务器 IP地址:192.168.1.124 B:从服务器 IP地址:192.168.1.125 前提:设置...

    mysql Linux下主从同步

    mysql在redhat Linux下的主从同步,实现master与slave的应用 已经测试可用

    docker-mysql-master-slave-master.zip

    此资源为shardingsphere 调研...内容:一个master mysql docker实例,一个slave docker实例 内置3个库,mydb,mydb0,mydb1。仅开启了这三个库的主从。如果三个库主从不够用,自行配置。 使用:1.解压 2.执行build.sh

    Centos7系统下Mysql主从同步配置方案

    由于只有双节点,且采用主主同步可能存在循环同步的风险,故综合考虑采用Mysql主从同步(Master-Slave同步)。 可能没有接触过Mysql数据同步时,可能会觉得数据同步很难,但你按照如下操作一遍之后,会发现原来同步...

    mysql主从同步配置.docx

    mysql主从同步配置,要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全按顺序的...

    基于MySQL数据库复制Master-Slave架构的分析

    本篇文章是对MySQL数据库复制Master-Slave架构进行了详细的分析介绍,需要的朋友参考下

    mysql主从配置与安装

    修改slave机中mysql配置文件 同样在[mysqld]字段下添加如下内容 server-id=2 master-host=192.168.1.222 master-user=repl master-password=123456 master-port=3306 master-connect-retry=60 replicate-do-db=repl ...

    Mysql主从数据库(Master/Slave)同步配置与常见错误

    今天小编就为大家分享一篇关于Mysql主从数据库(Master/Slave)同步配置与常见错误,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    MySQL不停机不锁表主从同步与读写分离配置

    MySQL不停机不锁表主从同步与读写分离配置,1 .xtrabackup安装.2.核对mysql的版本.3.在master服务器上在线备份数据库.4.slave机器上操作

    Mysql主从同步的实现原理

    1、什么是mysql主从同步? 当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。 2、主从同步有什么好处? 水平扩展数据库的负载能力。 容错,高可用。Failover(失败切换)/High Availability ...

    MYSQL主从数据库同步备份配置的方法

    Slave Server: 192.0.0.2/Linux/MYSQL 4.1.18   做主从服务器的原则是,MYSQL版本要相同,如果不能满足,最起码从服务器的MYSQL的版本必须高于主服务器的MYSQL版本 二、配置master服务器 1. 登录Master服务器,...

    MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置详解(Master-Linux Slave-windows7)

    主要为大家详细介绍了MYSQL5.6.33数据库主从(Master/Slave)同步安装与配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    mysql-master-slave.sh

    linux中shell脚本,用于监控mysql主从并且调用webservice接口发送短信

Global site tag (gtag.js) - Google Analytics