重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你表中的数据,根据你的题目,应该是全部显示才对。是小于5秒还是5分钟?
在福建等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站制作、成都网站设计、外贸营销网站建设 网站设计制作按需网站开发,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站,外贸营销网站建设,福建网站建设费用合理。
下面这个是 两条数据间小于5秒的记录的查询语句
select *,timestampdiff(second,t1.time,
(select time from table3 where t1.idid order by id limit 1) ) td ,
timestampdiff(second,
(select time from table3 where t1.idid order by id desc limit 1),t1.time
) td1
from table3 t1 where timestampdiff (second,t1.time,
(select time from table3 where t1.idid order by id limit 1) )5
or
timestampdiff(second,
(select time from table3 where t1.idid order by id desc limit 1),t1.time
)5
order by t1.id
执行命令: SET @@auto_increment_increment = 2;
也就是增长幅度为2.
SET @@auto_increment_offset = 1;
就是从1开始增长。
linux下配置mysql主从同步的步骤
一、主机环境
主机:
master操作系统:rhel6.0
IP:172.16.0.100
MySQL版本:5.1.47
从机:
slave操作系统:rhel6.0
IP:172.16.0.200
MySQL版本:5.1.47
二、创建数据库
分别登录master机和slave机的mysql:mysql –u root –p
创建数据库:create database repl;
三、master机和slave机的相关配置
1、修改master机器中mysql配置文件my.cnf,该文件在/etc目录下
在[mysqld]配置段添加如下字段
server-id=1
log-bin=mysql-bin
binlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库
binlog-ignore-db=mysql //被忽略的数据库
在master机上为slave机添加一同步帐号
grant replication slave on *.* to 'replication'@'172.16.0.200' identified by '123456';
重启master机的mysql服务:service mysqld restart
用show master status 命令看日志情况
mysqlshow master status;
+-----------------+------------+-------------------+-----------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------+------------+-------------------+-----------------------+
| log.000003 | 98 | repl | mysql |
+-----------------+------------+-------------------+-----------------------+
1 row in set (0.00 sec)
2、修改slave机中mysql配置文件
同样在[mysqld]字段下添加如下内容
server-id=2
master-host=172.16.0.100
master-user=repl
master-password=123456
master-port=3306
master-connect-retry=60
replicate-do-db=repl //同步的数据库,不写本行 表示 同步所有数据库
然后重启slave机的mysql
在slave机中进入mysql
mysqlstart slave;
mysqlshow slave status\G;
如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功。
这时 再执行show slave status\G
显示如下:
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.222
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: log.000003
Read_Master_Log_Pos: 98
Relay_Log_File: mysqld-relay-bin.000002
Relay_Log_Pos: 229
Relay_Master_Log_File: log.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 229
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.00 sec)
Slave_IO_Running: Yes Slave_SQL_Running: Yes
信息中如上两行都为Yes,说明配置成功。
五、测试主从服务器是否能同步
在主服务器上面新建一个表,必须在repl数据下
mysql use repl
Database changed
mysql create table test(id int,name char(10));
Query OK, 0 rows affected (0.00 sec)
mysql insert into test values(1,'zaq');
Query OK, 1 row affected (0.00 sec)
mysql insert into test values(1,'xsw');
Query OK, 1 row affected (0.00 sec)
mysql select * from test;
+------+------+
| id | name |
+-------+------+
| 1 | zaq |
| 1 | xsw |
+-------+------+
2 rows in set (0.00 sec)
在从服务器查看是否同步过来
mysql use repl;
Database changed
mysql select * from test;
+------+------+
| id | name |
+------+------+
| 1 | zaq |
| 1 | xsw |
+------+------+
2 rows in set (0.00 sec)
说明已经配置成功。
四、出现的问题
1. 当在执行start slave这条命令时,系统提示
ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO,
执行show slave status;又提示Empty set (0.00 sec)
原因:slave已经默认开启,要先关闭再开启
执行 slave stop;
再执行
change master to master_host='172.16.0.200',master_user='repl',master_password='123456', master_log_file='log.000003' ,master_log_pos=98;
2、出现错误提示 :Slave_IO_Running:NO
mysql的error日志中信息:
Slave I/O: error connecting to master 'replication@172.16.0.100:3306' - retry-time: 60 retries: 86400, Error_code: 1045
解决方法
1.在主mysql中创建slave远程连接访问时候的登录密码一定要设置对。
2.停止slave上的mysqld服务,从服务器上删除掉所有的二进制日志文件,包括一个数据目录下的master.info文件和hostname-relay-bin开头的文件,然后启动slave上的mysqld服务。
master.info::记录了Mysql主服务器上的日志文件和记录位置、连接的密码。
3.slave上Slave_SQL_Running: No ,提示某个表定义不正确
解决方法:
清空drop掉master和slave上的已经存在所有表,然后从master库上导入新的数据即可。
实现两个Mysql数据库之间同步同步原理:
MySQL 为了实现replication 必须打开bin-log 项,也是打开二进制的MySQL 日志记录选项。MySQL 的bin log 二
进制日志,可以记录所有影响到数据库表中存储记录内容的sql 操作,如insert / update / delete 操作,而不记录
select 这样的操作。因此,我们可以通过二进制日志把某一时间段内丢失的数据可以恢复到数据库中(如果二进制日
志中记录的日志项,包涵数据库表中所有数据,那么, 就可以恢复本地数据库的全部数据了)。 而这个二进制日志,
如果用作远程数据库恢复,那就是replication 了。这就是使用replication 而不用sync 的原因。这也是为什么要设
置bin-log = 这个选项的原因。
在同步过程中,最重要的同步参照物,就是同步使用那一个二进制日志文件,从那一条记录开始同步。下面就介绍
下怎样实现两个Mysql数据库之间的主从同步。
一、 概述
MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、
互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。
二、 环境
操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN)
Mysql版本:5.0.45-4.fc8
设备环境:PC(或者虚拟机)两台
三、 配置
数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下
为/etc/my.cnf。
3.1 设置环境:
IP的设置:
A主机 IP:10.10.0.119
Mask:255.255.0.0
B主机 IP:10.10.8.112
Mask:255.255.0.0
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态
。如果防火墙状态为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命
令来禁用或定制。
最终以两台主机可以相互ping通为佳。
3.2 配置A主(master) B从(slave)模式
3.2.1 配置A 为master
1、增加一个用户同步使用的帐号:
GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’;
赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权
限才可以。
2、增加一个数据库作为同步数据库:
create databbse test;
3、创建一个表结构:
create table mytest (username varchar(20),password varchar(20));
4、修改配置文件:
修改A的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:
server-id = 1 #Server标识
log-bin
binlog-do-db=test #指定需要日志的数据库
5、重起数据库服务:
service mysqld restart
查看server-id:
show variable like ‘server_id’;
实例:
mysql show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 1 |
+---------------+-------+
1 row in set (0.00 sec)
6、用show master status/G命令看日志情况。
正常为:
mysql show master status/G
*************************** 1. row ***************************
File: mysqld-bin.000002
positiion: 198
Binlog_Do_DB: test,test
Binlog_Ignore_DB:
1 row in set (0.08 sec)
3.2.2 配置B 为slave
1、增加一个数据库作为同步数据库:
create databbse test;
2、创建一个表结构:
create table mytest (username varchar(20),password varchar(20));
3、修改配置文件:
修改B的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:
server-id=2
master-host=10.10. 0.119
master-user=backup #同步用户帐号
master-password=1234
master-port=3306
master-connect-retry=60 #预设重试间隔60秒
replicate-do-db=test #告诉slave只做backup数据库的更新
5、重起数据库服务:
service mysqld restart
查看server-id:
show variables like ‘server_id’;
实例:
mysql show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 2 |
+---------------+-------+
1 row in set (0.00 sec)
6、用show slave status/G命令看日志情况。
正常为:
mysql show slave status/G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.10.0.119
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysqld-bin.000001
Read_Master_Log_Pos: 98
Relay_Log_File: mysqld-relay-bin.000003
Relay_Log_Pos: 236
Relay_Master_Log_File: mysqld-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: test,test
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 98
Relay_Log_Space: 236
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
1 row in set (0.01 sec)
3.2.3 验证配置
分别使用insert, delete , update在A主机进行增删改查数据库;查看B主机的数据库是否与A主机一致;若一致,则配
置成功。
3.3双机互备模式
如果在A主机加入slave设置,在B主机加入master设置,则可以做B-A的同步。
1、在A主机的配置文件中 mysqld配置项加入以下设置:
master-host=10.10.8.112
master-user=backup
master-password=1234
replicate-do-db=test
master-connect-retry=10
2、在B的配置文件中 mysqld配置项加入以下设置:
log-bin
binlog-do-db=test
注意:当有错误产生时,*.err日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,运行slave
start。
重起A、B机器,则可以实现双向的热备份。
总之,成功完成以上配置后,在主服务器A的test库里添加数据或删除数据,在从服务器B的test库里马上也能
看到相应的变更。两台服务器的同步操作可以说是瞬间完成的。