环境:
windows 64位
下载mysql:
http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-winx64.zip
建议用迅雷下载,这样比较快点
1、把下载下来的zip文件解压到D:\mysql目录下
新建文件夹data
把my-default.ini重命名为my.ini
2、进入D:\mysql\bin目录下
地址栏输入cmd打开命令窗口
输入命令:
mysqld --initialize
这时候D:\mysql\data目录下就有数据库啦
输入命令:
mysqld --install
这时候mysql服务就加到windows服务中啦
3、修改mysql登录名、密码:
1)进入D:\mysql目录下,修改my.ini 文件
在[mysqld]下添加一行
[mysqld]
skip-grant-tables
2)启动mysql
进入bin目录下,打开cmd命令窗口,
net start mysql
3)进入mysql
mysql
UPDATE mysql.user SET authentication_string = password('root') WHERE `User` = 'root';
flush privileges;
exit;
4) 关闭mysql
net stop mysql
5)修改my.ini文件把之前添加的skip-grant-tables删掉
6)启动mysql
7)进入mysql:
mysql -uroot -proot
set PASSWORD=password('root');
update user set host = '%' where user = 'root' limit 1;
flush privileges;
exit;
以上安装好了mysql,要准备两台机器,安装都这么安就好
主从复制:
环境:两台windows,都安装有mysql5.7.17
主服务器IP:192.168.1.110
从服务器IP:192.168.1.111
备注:
1)两台机器必须互相能访问,ping一下互通就好
2)两个mysql服务器必须都能正常访问
3)两个mysql版本必须一致,如果不一致可能会导致复制不成功
开始配置:
主服务器my.ini:
[mysqld]
# 要与从服务器不一致
server-id=222
# 开启log-bin日志
log-bin=mysql-bin
# 只复制abc数据库
binlog-do-db=abc
完成之后保存,然后重启服务器
进入mysql数据库,输入命令:
show master status;
记一下file,position两个字段(一般file会是mysql-bin.000006)
开启一个支持主从复制的用户,输入命令:
GRANT REPLICATION SLAVE ON *.* to 'test'@'192.168.1.111' identified by 'test';
配置从服务器:
修改my.ini,在[mysqld]下添加
[mysqld]
server-id=203
#只同步abc库
replicate-do-db=abc
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
保存之后重启数据库
进入mysql,
change master to master_host='192.168.1.110',master_user='test',master_password='test',master_log_file='mysql-bin.000006',master_log_pos=1606;
start slave;
show slave status;
数据恢复
mysqlbinlog --base64-output=decode-rows -vv --database=mytest --start-datetime="2022-09-26 12:10:00" --stop-datetime="2022-09-26 12:15:00" mysql-bin.000005 > mybinlog.txt
把delete语句修改成insert语句
cat mybinlog.txt | sed -n '/### /p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' | sed -r 's/(@5.*),/\1;/g' | sed 's/@[1-9]=//g' > result.txt
完成!
备注:
从数据库不要进行写数据操作,影响复制。
出了错的话要看错误日志,在data目录下的一个.err文件,查看【error】级别日志,然后解决就好啦。
如果slave_IO_running 为connecting 检查IP是否正确,用户名密码是否正确
如果slave_IO_running 为no,检查数据库版本号,看错误日志
如果slave_SQL_Running 为no,检查时候进行了写操作,看错误日志
SET GLOBAL log_bin_trust_function_creators = 1;-- 允许写函数、方法,1418错误
祝成功!