SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。 MySQL的主从复制是通过binlog日志来实现的,主从复制中的“主”指的是MySQL主服务器上的数据库,“从”指的是MySQL从服务器上的数据库,且这种复制是基于数据库级别的,为此从服务器中的数据库名称必须和主服务器中的数据库名称保持一致,那么,要想实现主从复制,我们至少要有两个MySQL服务器(最好是两个MySQL服务器分别位于不同的主机上,或者在一个主机上安装两个MySQL,端口不同即可)。一般来说,MySQL数据库的主库和从库是分布在不同的主机上。假如,现在我们只有一台主机,且是windows系统,如何实现MySQL的主从复制呢?方法如下: 这里我们只介绍 一主一从 的操作方法。 我的电脑已经安装了 xampp 集成环境(同wamp安装包类似),可以把它里面的MySQL服务作为MySQL的主服务器。那么,我们还需要在这台电脑上再安装一个MySQL,作为数据库的从服务器。 我的电脑xampp中已安装的MySQL版本为 5.6.20,端口为3306。 我们需要再安装一个MySQL(最好安装同版本和相近版本的,以免出现问题),端口改为3307 数据库服务器的参数:
主服务器配置: 修改主服务器的数据库配置文件(E:\xampp\mysql\bin\my.ini),在 [mysqld] 标签的最下面,添加如下代码: #需要备份的数据库 binlog-do-db=test #不需要备份的数据库 binlog-ignore-db=mysql #开启二进制日志 log-bin=mysql-bin #服务器id server-id=1 保存退出,重启MySQL主服务器。 binlog-do-db用于指定需要同步的数据库,binlog-ignore-db指定不需要同步的数据库,如果这两个参数都不设置,则从服务器会复制主服务器的所有数据库。 一般不用root账号作同步账号,为此,我们需要在主服务器上创建一个新的用户(如 user01,密码为123456)。 这里我们用命令行的方式创建,方法如下: 打开cmd,切换至 E:\xampp\mysql\bin,用 root 账户连接MySQL主服务器: mysql -uroot -p -P3306 创建新用户: create user 'user01'@'127.0.0.1' identified by '123456'; (@后面的ip地址为允许连接的客户端的ip地址。) 然后,给新用户配置主从复制的权限: grant
replication slave on *.* to 'user01'@'127.0.0.1' identified by '123456'; (@后面的ip地址为允许连接的客户端的ip地址,如果改为 '%',就表示客户端没有ip地址的限制) 如果主服务器的数据库(test)中,已经有数据,我们需要先手动把主服务器中的数据复制到从服务器。方法如下: 在本案例中,我们只备份一个数据库(test),test中有一个表basic_user,表中也已经有了数据。为了防止我们复制数据的时候,数据库test中的数据发生更新,我们需要先锁定数据库,命令如下: flush tables with read lock;
这个命令是全局读锁定,它会给主服务器中的所有数据库都加上读锁,这里顺便说一下读锁和写锁的区别:
锁定主服务器的数据库后,我们在从服务器中,也创建一个数据库test,并将所有的表(包括表结构和表数据)都导入。 然后,我们执行下面的命令,解锁: unlock tables; 查看主服务器的 master 状态: mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ |