mysql 实现主从复制的异常解决

mysql 实现主从复制的异常解决

window平台下要想实现主从复制,首先得有主和从

  1. 找到主从计算机(服务器)的IP地址,以便实现两个之间的联通;
  2. 有了主从,主从上都要有mysql,版本最好一致,不然数据复制过程中会出现一些意外情况;
    查看本机IP地址的方法
    打开cmd 输入ipconfig/all
    在这里插入图片描述
  3. 配置主服务器
    配置前检查一下数据库文件的存放地址;
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show variables like '%datadir%';
+---------------+--------------------+
| Variable_name | Value              |
+---------------+--------------------+
| datadir       | D:\MySqlData\Data\ |
+---------------+--------------------+
1 row in set, 1 warning (0.00 sec)

①开启binlog日志
找到配置文件所在位置 我的环境中是C:\ProgramData\MySQL\MySQL Server 8.0
关闭mysql服务。然后再修改my.ini
修改内容如下, 以记事本打开my.ini
[mysqld]之后添加如下内容

log_bin="D:/MySqlData/binlog #log的地址
expire_logs_days =10 #log的删除天数
max_binlog_size =100M #log文件最大的大小

另存为–my.ini(最好是另存为,同时可以检查该文件的另存为后的编码方式 --ansi)
开启mysql 服务并登录
检查二进制文件配置是否成功(log_bin 为 on则开启成功)


mysql> show variables like '%log_bin%' ;
+---------------------------------+--------------------------------------+
| Variable_name                   | Value                                |
+---------------------------------+--------------------------------------+
| log_bin                         | ON                                   |
| log_bin_basename                | D:\MySqlData\Data\HWL-2020-bin       |
| log_bin_index                   | D:\MySqlData\Data\HWL-2020-bin.index |
| log_bin_trust_function_creators | OFF                                  |
| log_bin_use_v1_row_events       | OFF                                  |
| sql_log_bin                     | ON                                   |
+---------------------------------+--------------------------------------+
6 rows in set, 1 warning (0.00 sec)
  1. 在主机上配置 所需要的账户,(如果有的话,那就不需要配置了,这里顺带复习一下创建用户)
mysql> create user 'user_log'@'%' identified by '123456' ;
Query OK, 0 rows affected (0.03 sec)

配置完毕再授予可复制从机权限(8.0之后在授权的时候创建用户会出错)

如下-----
mysql> grant replication slave on . to ‘user_l’@’%’ identified by ‘123456’ ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near ‘identified by ‘123456’’ at line 1

mysql> grant replication slave on *.* to 'user_log'@'%' ;
Query OK, 0 rows affected (0.00 sec)

5.配置主机信息
①退出mysql②并关闭主机的mysql服务③配置my.ini
配置my.ini内容如下

server-id=1 #服务器标识
binlog-do-db=hxjy # 需要复制的数据库
bin-ignore-db=mysql#忽略的数据库(即不需要复制的数据库)

配置完毕后重启mysql服务,登录mysql,检查主机状态;


mysql> show master status \G
*************************** 1. row ***************************
             File: HWL-2020-bin.000006
         Position: 689
     Binlog_Do_DB: hxjy
 Binlog_Ignore_DB: mysql
Executed_Gtid_Set:
1 row in set (0.00 sec)
  1. 将master主机的数据备份出来,然后导入到slave从机中去 (如果导出错误请检查导出地址是否符合mysql安全要求)

登录数据库检查—secure_file_priv 的值
mysql> show variables like ‘%secure%’
-> ;
±-------------------------±--------------+
| Variable_name | Value |
±-------------------------±--------------+
| require_secure_transport | OFF |
| secure_file_priv | C:\mysqlback\ |
±-------------------------±--------------+
2 rows in set, 1 warning (0.00 sec)

1 row in set (0.00 sec)

mysql> exit
Bye

C:\Users\Administrator>mysqldump -u root -p company hxjy >C:/mysqlback/hxjy.txt
Enter password: ******
  1. 配置slave从机的信息
    停止slave从机的mysql服务
    找到slave从机的my.ini 做如下修改
    [mysqld]
    default-character-set=utf8 #设置从机的默认编码
    log_bin=“D:/mysqlback/binlog” #设置从机的二进制文件存放地址
    expire_logs_days=10
    max_binlog_size=100M
    [mysqld]#新添加的
    server_id=2#写在新添加的后面,如果有其他binlog配置可以注释掉

  2. 重启slave 的mysql服务,登录slave, 关闭slave服务

mysql> stop slave ;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
  1. 设置slave从机实现复制的相关信息

mysql> change master to
    -> master_host='182.168.0.208' ,
    -> master_user='user_log',
    -> master_password='123456',
    -> master_log_file='HWL-2020-bin.000006',#要复制的二进制文件名
    -> master_log_pos=150;#偏移量
Query OK, 0 rows affected, 7 warnings (0.03 sec)

如果出现错误,那么检查一下主机的日志文件名与位置是否正确,


mysql> show master status \G
*************************** 1. row ***************************
             File: HWL-2020-bin.000006
         Position: 689
     Binlog_Do_DB: hxjy
 Binlog_Ignore_DB: mysql
Executed_Gtid_Set:
1 row in set (0.00 sec)
  1. 验证阶段–在主机上数据库hxjy 下建立表,插入数据检查从机上数据是否同步过去了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeMartain

祝:生活蒸蒸日上!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值