热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySQL数据库备份之复制

MySQL数据库备份之复制目录:1.MySQL复制简介2.MySQL复制的优势与思路3.数据复制环境之主服务器设置4.数据复制环境之从服务器设置5.创建复制帐号6.获取主服务器二

MySQL数据库备份之复制目录:1.MySQL复制简介2.MySQL复制的优势与思路3.数据复制环境之主服务器设置4.数据复制环境之从服务器设置5.创建复制帐号6.获取主服务器二

3.数据复制环境之主服务器设置

在实际的生产环境中,可能在我们还没有部署数据复制前,数据库中就已经存在大量数据,所以,这里我们事先创建一个测试用数据库及数据表,用来演示如何对已经存在的数据进行数据同步备份。

[root@master ~]# mysql -u root -p mysql> create database hr; mysql> use hr; mysql> create table employees( -> employee_id INT NOT NULL AUTO_INCREMENT, -> name char(20) NOT NULL, -> e_mail varchar(50), -> PRIMARY KEY(employee_id)); mysql> INSERT INTO employees values ->(1,'TOM','tom@example.com'), ->(2,'Jerry','jerry@example.com'); mysql> exit

我们需要在主服务器上开启二进制日志并设置服务器编号,服务器唯一编号必须是1232-1之间的整数,根据自己的实际情况进行设置。进行这些设置需要关闭MySQL数据库并编辑my.cnfmy.ini文件,并在[mysqld]设置段添加相应的配置选项。关于MySQL软件的安装这里不再赘述,请参考4.11.2章节内容。

[root@master ~]# vim /etc/my.cnf

[mysqld]

log-bin=Jacob-bin#启用二进制日志,并设置二进制日志文件前缀

server-id=254#设置服务器编号

[root@master ~]# service mysqld restart

[root@master ~]# service iptables stop

l注意:在配置文件中不可以使用skip-networking参数选项,否则从服务器将无法与主服务器进行连接并复制数据。

4.数据复制环境之从服务器设置

如果从服务器ID编号没有设置,或服务器ID编号与主服务器有冲突,就必须关闭MySQL服务并重新编辑配置文件,设置唯一的服务器编号,最后重启MySQL服务。如果有多台从服务器,则所有的服务器ID编号都必须是唯一的。可以考虑将服务器ID编号与服务器IP地址关联,这样ID编号同时可以唯一标识一台服务器计算机,如采用IP地址的最后一位作为MySQL服务器ID编号。

[root@slave1 ~]# vim /etc/my.cnf

[mysqld]

server-id=2

[root@slave1 ~]# service mysqld restart

[root@slave1 ~]# service iptables stop

对于复制而言,MySQL从服务器上二进制日志功能是不需要开启的。但是,你也可以通过启用从服务器的二进制日志功能,实现数据备份与恢复,此外在一些更复杂的拓扑环境中,MySQL从服务器也可以扮演其他从服务器的主服务器。

5.创建复制帐号

执行数据复制时,所有的从服务器都需要使用账户与密码连接MySQL主服务器,所以在主服务器上必须存在至少一个用户账户及相应密码供从服务器连接。这个账户必须拥有REPLICATION SLAVE权限,你可以为不同的从服务器创建不同的账户与密码,也可以使用统一的账户与密码。MySQL可以使用CREATE USER语句创建用户,使用GRANT语句为账户赋权。如果该用户仅为数据库复制所使用,则该账户仅需要REPLICATION SLAVE权限即可。下面的例子将在MySQL主服务器上创建一个拥有复制权限的slave_cp账户,该账户可以从example.com域内的任何主机连接主服务器,密码为SlaveAdmin

[root@master ~]# mysql -u root -p mysql> CREATE USER 'slave_cp'@'%.example.com' IDENTIFIED BY 'SlaveAdmin'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_cp'@'%.example.com'; mysql> exit

6.获取主服务器二进制日志信息

在进行主从数据复制之前我们了解一些主服务器的二进制日志文件的基本信息,这些信息在对从服务器的设置中需要用到,这些信息包括主服务器二进制文件名称及当前日志记录位置,这样从服务器就可以知道从哪里开始进行复制操作。我们可以使用如下操作查看主服务器二进制日志数据信息:

[root@master ~]# mysql -u root -p mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; +--------------------------------+------------+---------------------+-------------------------+--------------------------+ | File|Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +--------------------------------+------------+---------------------+-------------------------+--------------------------+ | jacob-log.000001|1276|||| +--------------------------------+------------+---------------------+--------------------------+-------------------------+ mysql> UNLOCK TABLES;

其中,File列显示的是二进制日志文件名,,Position为当前日志记录位置。

FLUSH TABLES WITH READ LOCK命令的作用是对所有数据库的所有表执行只读锁定,只读锁定后所有数据库的写操作将被拒绝,但读操作可以继续。执行锁定可以防止在查看二进制日志信息的同时有人对数据进行修改操作,最后使用UNLOCK TABLES语句对全局锁执行结束操作。

7.对现有数据库进行快照备份

如果在使用二进制日志进行数据复制以前,MySQL数据库系统中已经存在大量数据资源,对这些资料进行数据备份的一种方法使用使用mysqldump工具,在主服务器上使用该工具对数据备份后即可在从服务器上进行数据还原操作。当希望的数据达到主从一致后,就可以使用数据复制功能进行自动从此同步操作。具体操作如下(作者的环境中主服务器IP地址为172.16.0.254,从服务器IP地址为172.16.0.1),实际生产环境中需要根据自己的需要有选择的对数据库进行备份与还原:

[root@master ~]# mysqldump --all-databases --lock-all-tables > /tmp/dbdump.sql [root@master ~]# scp /tmp/dbdump.sql 172.16.0.1:/tmp/ [root@slave1 ~]# mysql -u root -p 8.配置从服务器连接主服务器进行数据复制
推荐阅读
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 在数据分析工作中,我们通常会遇到这样的问题,一个业务部门由若干业务组构成,需要筛选出每个业务组里业绩前N名的业务员。这其实是一个分组排序的 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
  • Linux 服务器修改用户名
    Linux服务器修改用户名1、编辑名称vimetchostname2、保存编辑并退出wq3、重 ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
author-avatar
一滴水
没事就吐槽!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有