2要想实现双机的热备首先要了解主从数据库服务器的版本的需求。要实现热备mysql的版本都要高于32,还有一个基本的原则就是作为从数据库的数据库版本可以高于主服务器数据库的版本,但是不可以低于主服务器的数据库版本。
3设置主数据库服务器:
a首先查看主服务器的版本是否是支持热备的版本。然后查看mycnf(类unix)或者myini(windows)中mysqld配置块的配置有没有log-bin(记录数据库更改日志),因为mysql的复制机制是基于日志的复制机制,所以主服务器一定要支持更改日志才行。然后设置要写入日志的数据库或者不要写入日志的数据库。这样只有您感兴趣的数据库的更改才写入到数据库的日志中。
server-id=1 //数据库的id这个应该默认是1就不用改动
log-bin=log_name //日志文件的名称,这里可以制定日志到别的目录 如果没有设置则默认主机名的一个日志名称
binlog-do-db=db_name //记录日志的数据库
binlog-ignore-db=db_name //不记录日志的数据库
以上的如果有多个数据库用","分割开
然后设置同步数据库的用户帐号
mysql> GRANT REPLICATION SLAVE ON
-> TO 'repl'@'%mydomaincom' IDENTIFIED BY 'slavepass';
402以前的版本, 因为不支持REPLICATION 要使用下面的语句来实现这个功能
mysql> GRANT FILE ON
-> TO 'repl'@'%mydomaincom' IDENTIFIED BY 'slavepass';
设置好主服务器的配置文件后重新启动数据库
b锁定现有的数据库并备份现在的数据
锁定数据库
mysql> FLUSH TABLES WITH READ LOCK;
备份数据库有两种办法一种是直接进入到mysql的data目录然后打包你需要备份数据库的文件夹,第二种是使用mysqldump的方式来备份数据库但是要加上"--master-data " 这个参数,建议使用第一种方法来备份数据库
c查看主服务器的状态
mysql> show master status\G;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
记录File 和 Position 项目的值,以后要用的。
d然后把数据库的锁定打开
mysql> UNLOCK TABLES;
4设置从服务器
a首先设置数据库的配置文件
server-id=n //设置数据库id默认主服务器是1可以随便设置但是如果有多台从服务器则不能重复。
master-host=db-mastermycompanycom //主服务器的IP地址或者域名
master-port=3306 //主数据库的端口号
master-user=pertinax //同步数据库的用户
master-password=freitag //同步数据库的密码
master-connect-retry=60 //如果从服务器发现主服务器断掉,重新连接的时间差
report-host=db-slavemycompanycom //报告错误的服务器
b把从主数据库服务器备份出来的数据库导入到从服务器中
c然后启动从数据库服务器,如果启动的时候没有加上"--skip-slave-start"这个参数则进入到mysql中
mysql> slave stop; //停止slave的服务
d设置主服务器的各种参数
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
e启动同步数据库的线程
mysql> slave start;
查看数据库的同步情况。
查看主从服务器的状态
mysql> SHOW PROCESSLIST\G //可以查看mysql的进程看看是否有监听的进程
如果日志太大清除日志的步骤如下
1锁定主数据库
mysql> FLUSH TABLES WITH READ LOCK;
2停掉从数据库的slave
mysql> slave stop;
3查看主数据库的日志文件名和日志文件的position
show master status;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| louis-bin001 | 79 | | mysql |
+---------------+----------+--------------+------------------+
4解开主数据库的锁
mysql> unlock tables;
5更新从数据库中主数据库的信息
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name', //主服务器的IP地址
-> MASTER_USER='replication_user_name', //同步数据库的用户
-> MASTER_PASSWORD='replication_password', //同步数据库的密码
-> MASTER_LOG_FILE='recorded_log_file_name', //主服务器二进制日志的文件名(前面要求记住的参数)
-> MASTER_LOG_POS=recorded_log_position; //日志文件的开始位置(前面要求记住的参数)
6启动从数据库的slave
mysql> slave start;重置mysql主从同步(MySQL Reset Master-Slave Replication)
在mysql主从同步的过程中,可能会因为各种原因出现主库与从库不同步的情况,网上虽然有一些解决办法,但是有时很难彻底解决,重置主从服务器也许不是最快的办法,但却是最安全有效的。
下面将自己重置主从同步的步骤总结一下,以备不时之需。
master与slave均使用:centos60+mysql 5161 ,假设有db1,db2两个数据库需要热备。
文中shell与mysql均使用root账号,在真实环境中,请根据情况更换。
1停止slave服务器的主从同步
为了防止主从数据不同步,需要先停止slave上的同步服务。
STOP SLAVE;
2对master服务器的数据库加锁
为了避免在备份的时候对数据库进行更新 *** 作,必须对数据库加锁。
FLUSH TABLES WITH READ LOCK;
如果是web服务器也可以关闭apache或nginx服务,效果也是一样的。在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止。介于这种情况,我们来学习一下mysql主从复制。
使用mysql主从复制的好处有:
1、采用主从服务器这种架构,稳定性得以提升。如果主服务器发生故障,我们可以使用从服务器来提供服务。
2、在主从服务器上分开处理用户的请求,可以提升数据处理效率。
3、将主服务器上的数据复制到从服务器上,保护数据免受意外的损失。
环境描述:
新企业要搭建架构为主从复制的mysql数据库。
主服务器(mysql-master):IP地址:19216848128,mysql已安装,没有用户数据。
从服务器(mysql-slave):IP地址:19216848130,mysql已安装,没有用户数据。
主从服务器均可正常提供服务。
主从复制配置如下:
在主服务器上 *** 作:
1)、确保/etc/mycnf中有如下参数,没有的话需手工添加,并重启mysql服务。
[mysqld]
log-bin=mysql-bin 启动二进制文件
server-id=1 服务器ID
2)、登录mysql,在mysql中添加一个backup的账号,并授权给从服务器。
[root@localhost ~]# mysql -uroot –p123456 登录mysql
mysql> grant replication slave on to 'backup'@'19216848130' identified by 'backup'; 创建backup用户,并授权给19216848130使用。
3)、查询主数据库状态,并记下FILE及Position的值,这个在后面配置从服务器的时候要用到。比如集群,那是同时的;
服务的话比如DNS是设置的,域服务器有PDA、BDA,
你说的是啥服务,对外还是对内的,对内的可以说访问A失败就去访问B,有个韩国的服装企业就是用的集群。一、 概述
MySQL从32315版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。
二、 环境
*** 作系统:Linux 26231-42fc8 # SMP(不安装XEN)
Mysql版本:5045-4fc8
设备环境:PC(或者虚拟机)两台
三、 配置
数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是mycnf):在本环境下为/etc/mycnf。
31 设置环境:
IP的设置:
A主机 IP:10100119
Mask:25525500
B主机 IP:10108112
Mask:25525500
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态
为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。
最终以两台主机可以相互ping通为佳。
32 配置A主(master) B从(slave)模式
321 配置A 为master
、增加一个用户同步使用的帐号:
GRANT FILE ON TO ‘backup’@'10108112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON TO ‘backup’@'10108112' IDENTIFIED BY ‘1234’;
赋予10108112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。
、增加一个数据库作为同步数据库:
create database test;
、创建一个表结构:
create table mytest (username varchar(20),password varchar(20));
、修改配置文件:
修改A的/etc/mycnf文件,在mycnf配置项中加入下面配置:
server-id = 1 #Server标识
log-bin
binlog-do-db=test #指定需要日志的数据库
、重起数据库服务:
service mysqld restart
查看server-id:
show variable like ‘server_id’;Slave_SQL_Running: No mysql同步故障解决
如果数据不同步可以尝试该资料
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
Seconds_Behind_Master:NULL
原因:
1程序可能在slave上进行了写 *** 作
2也可能是slave机器重起后,事务回滚造成的
解决办法I:
1首先停掉Slave服务:slave stop
2到主服务器上查看主机状态:
记录File和Position对应的值。
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin000020 | 135617781 | | |
+------------------+-----------+--------------+------------------+
1 row in set (000 sec)
3到slave服务器上执行手动同步:
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin000020',
> master_log_pos=135617781;
1 row in set (000 sec)
mysql> slave start;
1 row in set (000 sec)
再次查看slave状态发现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
解决办法II:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;1、关闭Liunx系统的防火墙,如果忘了,你下面的测试连接必定会失败,切记,切记,切记。
2、yum安装lrzsz和cmake
yum -y install lrzsz;
yum -y install cmake;
首先熟悉MySql数据库,很多人都是直接安装原生版的MySql数据库(就是官网上下载的数据库安装包),也有人用的是MySql的衍生版数据库,如percona,我用的就是这种,下面我会分别说明原生版和衍生版MySql数据库的安装和主从配置。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)