首页 > 编程知识 正文

mysql数据库,mysql数据库编程

时间:2023-05-04 18:40:32 阅读:165495 作者:2973

1. MySQL热备份主要分为两种

1 )主从备份(单向) )。

主服务器的数据实时备份到从服务器,从服务器的数据与主服务器一致。 用户只允许对主服务器中的数据进行操作。

2 )主备份(双向) )

两个数据库服务器同时决定主从,用户可以同时对数据进行两侧操作,自动保持两个数据库的数据一致。

注意:采用自包含身份冲突(需要额外配置)

自动输入=2# # # #每次增加2 (支持几个备份的服务器数量) ) )。

自动输入偏移=1# # # #开始ID为1

2 .备份原理概述

【ref:http://blog.csdn.net/bmdwnyao 02123202/article/details/19323399】

简单地说,只要两个数据库具有相同的初始状态,就可以通过在一个服务器上执行的sql语句在另一个服务器上重复执行来实现同步。

当然,这种复制和重复是由mysql自动实现的。 只需配置即可。

详细说明原理。 这有一张图:

上图显示了将数据从一个主服务器(master )同步到从服务器(slave )的过程。

这是主-从复制的示例。 主-主相互复制只需把上面的例子倒过来再做一次。

对于mysql服务器,通常有两个复制和负责复制的线程。 打开复印后。

1 )作为主服务器Master,每次自己的变更都记录在二进制日志Binarylog中。 (来从服务器中读取此log,然后在自己的地方再次运行。 )

2 )以来自服务器的Slave身份,用master上的帐户登录master,读取master的Binarylog,并写入自己的中继日志Relaylog。 然后,它的sql线程负责读取该中继日志并执行一次。 到目前为止,主服务器的更改已同步到从服务器。

mysql可以显示当前服务器的主、从状态。 实际上是现在服务器的Binary (主服务器的作用)的状态和位置。 然后,其RelayLog (作为从服务器)的复制的进展情况。

例如,要在主体服务器上查看主体状态:

mysql show master statusG

* * * * * * * * * * * * *1. row * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1* * * * * * *1* * * * * * * * * * 1

File: mysql-bmdwn.000002

位置: 742409

Binlog_Do_DB: mail_info

Binlog_Ignore_DB:

1原始插入(0.00秒)。

我来解释一下这几行的意思:

1 )第一行表示当前记录的bmdwnarylog文件名为bmdwnary-bmdwn.000002。

此文件位于mysql数据目录中

数据目录:

在windows上,c :program dataMySQLMySQL server 5.6data((或其他具体安装目录下) ) ) )。

linux下:/usr/local/mysql/data/

2 )第二行,742409 )指示当前文件偏移量,并写入bmdwnary-bmdwn.000002文件的记录位置。

这两点构成主服务器的状态。 配置从属服务器时,必须使用这两个值。 我会告诉你从服务器中读取主服务器的数据。 从服务器登录时,会找到此日志文件,并在此偏移后开始复制。 )

3 )第三和第四行列出了需要记录的数据库以及需要忽略的数据库。 只有需要记录的数据库才会将更改写入bmdwnary-bmdwn.000002日志文件中。

在从服务器上,还可以确认从服务器的复制状态。

1: mysql show slave statusG

23360 * * * * * * * * * * *1. row * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1* row

3: slave _ io _ state 3360 waitingformastertosendevent

43360 master _ host :192.168.1.229 (见具体IP ) ) ) ) ) ) )。

5: Master_User: test (参见具体的user ) ) ) ) ) )。

6: Master_Port: 3306

7: Connect_Retry: 60

8: Master_Log_File: bmdw

nary-bmdwn.000002

9:            Read_Master_Log_Pos: 742409

10:                 Relay_Log_File: ***-relay-bmdwn.000003

11:                  Relay_Log_Pos: 742284

12:          Relay_Master_Log_File: bmdwnary-bmdwn.000002

13:               Slave_IO_Running: Yes

14:              Slave_SQL_Running: Yes

15:                Replicate_Do_DB: [需要备份的数据库]

16:            Replicate_Ignore_DB:

17:             Replicate_Do_Table:[需要备份的数据表]

18:         Replicate_Ignore_Table:

19:        Replicate_Wild_Do_Table:[需要备份的数据表]

20:    Replicate_Wild_Ignore_Table:

21:                     Last_Errno: 0

22:                     Last_Error:

23:                   Skip_Counter: 0

24:            Exec_Master_Log_Pos: 742409

25:                Relay_Log_Space: 742459

26:                Until_Condition: None

27:                 Until_Log_File:

28:                  Until_Log_Pos: 0

29:             Master_SSL_Allowed: No

………………………………………..

Master_Server_Id: 1

…………………………………………

相关说明:

1).  Master_host 指的是 主服务器的地址。

2). Master_user 指的是主服务器上用来复制的用户。  从服务器会用此账号来登录主服务。进行复制。

3). Master_log_file 就是前面提到的, 主服务器上的日志文件名.

4). Read_Master_log_pos 就是前面提到的主服务器的日志记录位置, 从服务器根据这两个条件来选择复制的文件和位置。

5). Slave_IO_Running:  指的就是从服务器上负责读取主服务器的线程工作状态。 从服务器用这个专门的线程链接到主服务器上,并把日志拷贝回来。

6). Slave_SQL_Running: 指的就是专门执行sql的线程。 它负责把复制回来的Relaylog执行到自己的数据库中。 这两个参数必须都为Yes 才表明复制在正常工作。

7). Replicate_Do_Table: 指当主数据库操作数据表时,它所在的数据库为默认数据库(use database),后面的从数据库备份功能才能起效,否者对该数据表的操作不会热备份到从数据库中(不允许跨数据库更新表格)。对应在配置文件中的格式为replicate_do_table=dbname.tablename1   replicate_do_table=dbname.tablename2

8). Replicate_Wild_Do_Table: 不需要强制当前处理的数据库为默认数据库,始终会热备份对应数据表中的数据。配置文件格式如上。

3. 主从热备份配置

【系统:windows 7 with MySQL5.6】

【注意事项:主服务器中的MySQL版本应该低于等于从服务器MySQL版本】

3.1 添加用于备份的用户并授予复制权限

mysql> grant replication slave on *.* to ‘test’@’192.168.1.130’  identified by ‘test’;

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

(备注: test为主服务器中创建用于备份的用户,密码为test; 192.168.1.130 为从服务器IP)

3.2 配置主服务器中的my.ini文件

文件位置:

Windows: 默认安装 C:ProgramDataMySQLMySQL Server 5.6my.ini 或者查看MySQL 5.6 Command Line Client 属性中目标里面的值 "--defaults-file=C:ProgramDataMySQLMySQL Server 5.6my.ini"

Linux: /etc/my.cnf

配置内容:

……

[mysqld]

……

# Binary Logging.

log-bmdwn = bmdwnary_log

bmdwnlog-format = mixed

read-only = 0

bmdwnlog-do-db = mail_info

#bmdwnlog-ignore-db = ……

……

# Server Id.

server-id=1  ######### ID 必须唯一 #########

……

重启MYSQL56服务,然后查看master状态

mysql>show master statusG

提示相应信息。

3.3 配置从服务器数据库

my.ini文件修改server-id

……

[mysqld]

……

#备份指定数据表(否则备份数据库下的所有数据表)

replicate_wild_do_table=dbname.tablename1(mail_info.mail_ope_info)

replicate_wild_do_table=dbname.tablename2(根据实际情况确定copy几张表)

......

# Server Id.

Server-id = 2 (必须唯一)

MySQL 5.6 Command Line Client 命令行输入

mysql>change master to

>master_host = ‘192.168.1.229’,

>master_user = ‘test’,

>master_password = ‘test’,

>master_log_file = ’bmdwnary_log.000002’,

>master_log_pos = 120;

备注: host为主服务器IP, user和password 为主服务器中创建用于备份的, log file和position则记录从什么位置开始进行备份。(最后两项视实际情况而定)

重启从服务器中MYSQL56服务

检查此时data目录下会多出一个文件master.info

检查slave状态:

mysql>start slave;

mysql>show slave statusG

此时对主服务器中数据库进行操作的话会实时同步到从数据库中。

停止备份

mysql>stop slave;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。