mysql主从同步配置

https://blog.csdn.net/orangleliu/article/details/60587385

https://blog.csdn.net/my_bai/article/details/72831572

查看mysql版本:https://www.cnblogs.com/kzwrcom/p/6014544.html

最好保证主从库版本一致(官网下载地址:https://dev.mysql.com/downloads/mysql/;https://downloads.mysql.com/archives/community/)

绿色版mysql安装:https://www.cnblogs.com/weiguo21/p/4305896.html

https://blog.csdn.net/qq_37350706/article/details/81707862

https://blog.csdn.net/memory6364/article/details/82426052

不停止主库备份过程

1.备份主库数据库

mysqldump -uroot -p --default-character-set=gbk --routines --single_transaction --master-data=2 --all-databases >name

参数说明:

routines:导出函数和存储过程

single_transaction:导出开始时设置事务隔离状态,并使用一致性快照开始事务(不是特别理解,我理解为备份过程为一个事务);

master-data:默认等于1,将dump起始(change master to)binlog点和pos值写到结果中,等于2是将change master to写到结果中并注释。

主库配置:

basedir = D:\daily-tools\mysql-5.6.35-winx64
 datadir = D:\daily-tools\mysql-5.6.35-winx64\data
 
 #服务端的编码方式
 character-set-server=utf8
#客户端编码方式,最好和服务端保存一致
#loose-default-character-set = utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
 port = 3306
# server_id = .....
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index
 
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
 
auto-increment-increment = 10
auto-increment-offset = 1
 

2.恢复从数据库(mysql在windows下不区分大小写,增加lower_case_table_names=0 (0:大小写敏感;1:大小写不敏感)也不管用;linux默认区分大小写)

使用LogViewPro软件查看备份文件,由于文件将近4g,需要借助工具查看;

其中文件开头前20多行内有一行:CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.001236', MASTER_LOG_POS=28804775;

如果有此行,继续恢复从数据库,如果没有需要重新备份数据库。

cmd,进入mysql安装bin目录下,输入 mysql -uroot -p密码 进入mysql;

输入source 备份文件名.sql恢复数据库。

3.主库授权从库用户、密码

grant replication slave on *.* to 'root-slave'@'192.168.*.*' identified by '***';
FLUSH PRIVILEGES;

4.从备份文件查看主库备份位置

 MASTER_LOG_FILE='mysql-bin.001243', MASTER_LOG_POS=3515805;

5.从库配置修改

# 设置mysql服务器编码
character_set_server=utf8
#basedir设置mysql的安装目录,如果目录中带空格则必须加引号
#datadir设置mysql数据库的数据的存放目录,文件夹名必须是data
basedir=E:\using-tools\mysql-5.6.40-winx64    
datadir=E:\using-tools\mysql-5.6.40-winx64\data


log-bin = mysql-bin
server_id=2


replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema


relay_log=slave-relay-bin
log-slave-updates = on

 

6.在从服务器上开启同步

 

 CHANGE MASTER TO 
       MASTER_HOST='192.***.***.***', 
       MASTER_USER='root-slave', 
       MASTER_PASSWORD='*****', 
       MASTER_LOG_FILE='mysql-bin.000004', 
       MASTER_LOG_POS=7145;'192.***.***.***', 
       MASTER_USER='root-slave', 
       MASTER_PASSWORD='*****', 
       MASTER_LOG_FILE='mysql-bin.000004', 
       MASTER_LOG_POS=7145;

SHOW SLAVE STATUS;(slave_io_running、slave_sql_running为yes,表示开启成功)

7.如果不成功:

https://blog.csdn.net/cedar707/article/details/79148660

SHOW SLAVE STATUS;
STOP SLAVE;
SHOW VARIABLES LIKE '%skip%';
SET GLOBAL sql_slave_skip_counter=1;
START SLAVE;

slave-skip-errors = allmy.ini增加此句问题解决

SHOW SLAVE STATUS;
STOP SLAVE;
START SLAVE;
CHANGE MASTER TO
MASTER_HOST='ip',
MASTER_USER='103root',
MASTER_PASSWORD='',
MASTER_LOG_FILE='mysql-bin.001243',
MASTER_LOG_POS=3515805;

8.从库只读

read_only=1只读模式,可以限定普通用户进行数据修改的操作,但不会限定具有super权限的用户(如超级管理员root用户)的数据修改操作。

在MySQL中设置read_only=1后,普通的应用用户进行insert、update、delete等会产生数据变化的DML操作时,都会报出数据库处于只读模式不能发生数据变化的错误,

但具有super权限的用户,例如在本地或远程通过root用户登录到数据库,还是可以进行数据变化的DML操作;

为了确保所有用户,包括具有super权限的用户也不能进行读写操作,就需要执行给所有的表加读锁的命令 “flush tables with read lock;”

 

 

 

 

 

停止主库备份过程

查看数据库安装目录:show variables like "%char%";

1.主库配置

 

basedir = D:\daily-tools\mysql-5.6.35-winx64
 datadir = D:\daily-tools\mysql-5.6.35-winx64\data
 
 #服务端的编码方式
 character-set-server=utf8
#客户端编码方式,最好和服务端保存一致
#loose-default-character-set = utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
 port = 3306
# server_id = .....
#主库配置
server_id=1
log_bin=master-bin
log_bin-index=master-bin.index

binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema

auto-increment-increment = 10
auto-increment-offset = 1

2.主库授权从库用户、密码

 

grant replication slave on *.* to 'root-slave'@'192.168.*.*' identified by '***';
FLUSH PRIVILEGES;

3.重启主库数据库服务器

show master status;

 

4.获取主库初态

 

FLUSH TABLES WITH READ LOCK;

mysqldump --master-data -uroot -p 数据库名 -> 备份数据库名.sql

unlock tables;

 

5.修改从库数据库配置文件

# 设置mysql服务器编码
character_set_server=utf8
#basedir设置mysql的安装目录,如果目录中带空格则必须加引号
#datadir设置mysql数据库的数据的存放目录,文件夹名必须是data
basedir=E:\using-tools\mysql-5.6.40-winx64    
datadir=E:\using-tools\mysql-5.6.40-winx64\data


log-bin = mysql-bin
server_id=2


replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema


relay_log=slave-relay-bin
log-slave-updates = on

 

6.在从服务器上开启同步

 

 CHANGE MASTER TO 
       MASTER_HOST='192.***.***.***', 
       MASTER_USER='root-slave', 
       MASTER_PASSWORD='*****', 
       MASTER_LOG_FILE='mysql-bin.000004', 
       MASTER_LOG_POS=7145;'192.***.***.***', 
       MASTER_USER='root-slave', 
       MASTER_PASSWORD='*****', 
       MASTER_LOG_FILE='mysql-bin.000004', 
       MASTER_LOG_POS=7145;

SHOW SLAVE STATUS;(slave_io_running、slave_sql_running为yes,表示开启成功)

 

7.创建表,添加数据,从库会自动生成

AB双主互相热备只需将主从反过来配置一遍即可

 

 

 

允许root用户远程登录:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

删除授权操作: REVOKE all on TEST-DB from test-user; ****注:该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。 最后从用户表内清除用户: DELETE FROM user WHERE user="test-user"; 重载授权表: FLUSH PRIVILEGES; 退出mysql数据库: exit

mysqldump -uroot -p** --databases dbname> $DumpFile;

grant all privileges on *.* to root@"%" identified by ".";

flush privileges;

在忘记root密码的时候,可以这样 

以windows为例:   

1. 关闭正在运行的MySQL服务。  

2. 打开DOS窗口,转到mysql\bin目录。  

3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。  

4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。  

5. 输入mysql回车,如果成功,将出现MySQL提示符 >。  

6. 连接权限数据库: use mysql; 。  

6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。  

7. 刷新权限(必须步骤):flush privileges; 。  

8. 退出 quit。

9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值