1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux下mysql主从同步备份master-slave详细配置

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

时间:2018-05-20 11:50:16

相关推荐

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服务器的配置

#打开f配置文件

vi /etc/mysql/f

#键入 /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 |

+——————+———-+————–+——————+

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

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

#在此必须要加入–master-data选项,保证在dump时会记录到binlog名称和偏移值

#而使用–lock-all-tables的原因就是为了数据在导出的时候没有其它新数据插入,保证一致性

mysqldump –master-data=1 –lock-all-tables=true -uroot - myslave > /home/myslave_bak_0326.sql

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

6、使用sz命令下载备份文件

sz /home/myslave_bak_0326.sql

7、修改Slave服务器的配置

#具体的路径以及版本都与Master服务器一样

vi /etc/mysql/f

#请对照设置,如下

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_0326.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’,'’);

#插入成功之后,稍等片刻,就可以在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中,会同时存在两份相同的数据,一份是基于硬盘的,是存储本地数据库实例的数据的,

另外一份是基于内存的,用于与集群中的其他节点进行数据同步的。

相对来说,对系统的开销会大一些,而且不能适应于大数据量的应用环境中,因为受到系统内存的限制。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。