MySQL、MariaDB数据库的AB复制配置过程。MYSQL数据库没有增量备份的机制,所以如果面对比较大的数据量,并且需要时时更新时,我们可以利用mysql提供的replication机制来间接实现增量备份功能。Replication是一种异步复制过程。
Mysql的AB复制方式大致分为4种:常规的一主一从模式、双主模式、一主多从模式、多主多从模式等,可以根据实际情况来搭建环境。本文采用最常规的一主一从的模式。
Mysql的AB复制功能在版本上需要注意,MYSQL的版本都要高于3.2,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
从机的mysql版本一定不小于主机的mysql (mariadb) 版本
下面我来介绍下简单配置和详细配置
mysql 5.1 的简单配置
一、简单配置
Mysql 主机IP 10.0.0.201 (centos 5.6 64位 mysql 5.1 )
Mysql 从机IP 10.0.0.202 (redhat 6.0 32 位 mysql 5.2)
(一)主机配置
修改 /etc/my.cnf 文件
[mysqld]
server-id=1
log-bin=mysql-bin.log
重启mysql
mysql -p 进入mysql
mysql >grant all on *.* to ‘slave’@’10.0.0.201′ identified by ‘slave202′; (把所有数据库的所有表,all权限给IP为10.0.0.201 的slave用户)
mysql> flush tables with read lock;
换个终端 tar czf mysql.back.tar.gz /var/lib/mysql
如果感觉必要的话倒到从库中
mysql > unlock tables
(二)从库配置
vi /etc/my.cnf
[mysqld]
server-id=2
master-host=10.0.0.201
master-user=slave
master-password=slave201
然后重启数据库
mysql -p
进入数据库后
mysql> show master; 查看状态
>slave stop;
mysql> change master to master_host = ’10.0.0.201′, # master的ip - >master_user=’slave’, # 连接master的用户名
->master_password = ‘slave201′; # 连接master的密码
mysql> slave start
(三)你就可以测试了
MariaDB 5.5 的复杂配置
二、详细配置AB复制
Mysql 主机IP 10.0.0.201 (ubuntu server 12.04 mariadb 5.5)
Mysql 从机IP 10.0.0.202 (redhat 6.0 mariadb 10.0)
首先进行主mysql的设置
1,进入mysql的命令行,在master上添加slave复制用的账号,使用一下命 令: mysql> grant all on *.* to ‘slave’@’10.0.0.202′ identified by ‘slave201′;
2,对mysql的配置文件进行修改,即/etc/my.cnf :
[mysqld]
server-id = 1 # master的id号
log-bin=mysql-bin.log # 开启二进制日志,名称是mysql-bin.0xxxxx
long_query_time =1 # 慢查询超时记录,要根据实际情况设置
log-slow-queries=slowqueris.log # 慢查询日志存放的位置
binlog-do-db=first # 记录first这个库的日志
binlog-ignore-db = mysql # 不记录mysql这个库的日
auto-increment-increment = 2 # replication的总数,此处是2
auto-increment-offset = 1 # 和server-id的值一样,是指replication的id
master-connect-retry=60 # 预设的重新连接master的时间
replicate-do-db=first # 只复制first这个库的数据(可写多个)
replicate-ignore-db=mysql # 不复制的库(可写多个)
然后重启mysql,查看二进制日志是否开启:
mysql> show variables like ‘log_bin’;
3,从master导出数据,此处适用的是mysqldump方式:
(1)首先对需要导出数据的库加读锁:
mysql> flush tables with read lock;
(2)导出数据: ./mysqldump -u root -p zzz > zzz.dump
二,然后配置从mysql 。
1,对mysql的配置文件进行修改,即/etc/my.cnf :
[mysqld]
server-id=2 # slave的id号
log-bin=master.log # 开启二进制日志,名称是master.0xxxxx
long_query_time =1
log-slow-queries=slowqueris.log
binlog-do-db=zzz
binlog-ignore-db = mysql
auto-increment-increment = 2
auto-increment-offset = 2 # 和server-id的值一样,是指replication的id
master-connect-retry=60
replicate-do-db=zzz
2,重启mysql,查看二进制日志是否开启。
3,导入slave数据: ./mysql -u root -p zzz < zzz.dump
4,查看master上的状态: mysql> show master status;
5,在slave设置,制定复制用的用户、master的ip、port以及开始复制的日志和偏移量值: mysql> change master to master_host = ’10.0.0.201′, # master的ip - >master_user=’slave’, # 连接master的用户名
->master_password = ‘slave201′, # 连接master的密码
->master_port=3306, # master上mysql端口
->master_log_file = ‘mysql-bin.000006′, # 读取的master日志
->master_log_pos=314; # 日志文件的开始位置, 上图中的Position数值
有些参数从上面的状态表中得到。
(master_log_file、master_log_pos 可以不写)
6,启动slave线程: mysql> start slave;
7,解除master上的锁,在master上使用下面的命令:
mysql> unlock tables;
8,查看slave的状态,使用命令: show slave status;
Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes如果这两个状态不是yes,那么请检查上面的配置是否正确,主要是file和position设置是否正确,从库是否能用主库的账号登陆
可以看到一些参数来确认一下
http://www.server110.com/mariadb/201404/9159.html