标签:
?
1、基本概念
?
至少两台数据库服务器,可以分别设置主服务器和从服务器,对主服务器的任何操作都会同步到从服务器上。
主服务器:增删改的操作:
从服务器:查询操作。
2、基本原理:
mysql中有一种日志,叫做bin日志(二进制日志),会记录下所有修改过数据库的sql语句。主从复制的原理实际是多台服务器都开启bin日志,然后主服务器会把执行过的sql语句记录到bin日志中,之后把这个bin日志发给从服务器,在从服务器再把bin日志中记录的sql语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。
?
1、创建用户,给用户授权
查看当前服务器上面的用户情况:
创建用户语法:
grant 权限名称 on *.* to ‘用户名称‘@‘登录的主机‘ identified by ‘密码‘
*.* 所有的库和所有的表.
all :是指所有的权限。
%:是指在所有的主机上都可以登录。也可以指定一个ip地址。表名登录的主机。
?
?
drop user 用户名称@host主机名
?
(1)关闭mysql
(2)进入到mysqlbin目录,mysqld.exe --skip-grant-tables;
?
(3)无需密码登录。
(4)重新设置root用户的密码
?
update mysql.user set password=password() where user=‘root‘ and host=‘localhost‘;
?
(5)加载设置权限。
flush privileges
?
1、如何打开bin-log日志。
在配置文件中:添加如下语法:
bin-log=log日志的文件名。
bin-log 默认是存储在data目录(和数据库的目录一致),我们也可以指定它的存储地址。
?
?
使用该命令:查看log-bin日志里面的内容,在查看该日志时,重点要记住记录的sql语句和pos(存储sql语句的位置)点。
语法:
mysqlbinlog.exe –no-defaults log-bin日志的完整路径
?
?
?
?
mysql>flush logs 生成最新的一个bin-log日志
此时就会多一个最新的bin-log日志
mysql>show master status
查看最后一个bin日志
mysql>reset master;
清空所有的bin-log日志。
查看bin-log日志里面的内容
mysqlbinlog –no-defaults mysql-bin.000003
?
(1)创建一个表;
(2)重新生成一个bin-log日志文件。
flush logs
(3)添加数据
(4)重新生成一个bin-log日志文件
?
(5)不小心把里面的数据给删除了。
?
?
(6)恢复数据
?
可以使用bin-log日志完成数据的恢复。
?
mysqlbinlog.exe –no-defaults 日志的完整路径 | mysql –uroot –proot
?
?
测试结果恢复成功:
?
5、使用日志里面的pos点来完成数据的恢复。
典型案例:一个公司,在上午9:00备份了数据,到9:30分的时候,由于员工误操作,把半小时内的数据给弄丢了。问如何恢复。
?
(1)主服务器和从服务器都开启bin-log日志,
(2)要给主从服务器设置一个唯一的server_id的值。并重启服务器。
?
(3)给从服务器设置授权用户
grant all on *.* to user1@192.168.10.10 identified by ‘456‘;
或
grant replication slave on *.* to user@192.168.10.10 identified by ‘456‘
或
grant replication slave on *.* to user@‘%‘identified by ‘456‘
?
(4)查看主服务器的最后一个log-bin日志 的名字和pos点
show master status;
要注意:此时要停止对主服务器的任何操作。因为对主服务器有读写操作则postion会跟着改变。
(1)先关闭从服务器(每次重新配置时需要先关闭)
stop slave
?
(2)开始配置:
change master to master_host=‘主服务器的ip地址‘,master_user=‘主服务器上用于同步数据的账号‘,master_password=‘同步账号的密码‘,master_log_file=‘bin日志的文件名‘,master_log_pos=bin日志中的position值。
?
(3)开启重服务器:
start slave
(4)查看有没有成功:
show slave status \G
?
Slave_IO_Running:Yes
此进程负责从服务器从主服务器上读取binlog 日志,并写入从服务器上的中继日志。
Slave_SQL_Running:Yes
此进程负责读取并且执行中继日志中的binlog日志,
注:以上两个都为yes则表明成功,只要其中一个进程的状态是no,则表示复制进程停止,错误原因可以从"last_error"字段的值中看到。
标签:
原文地址:http://www.cnblogs.com/yizhinageyuanfang/p/5519528.html