mysql+主从+磁盘_mysql主从库同步数据配置

首先要有多台服务器

再者 一台主服务器写二进制文件

从服务器读取日志,更新自己的服务器。

然后主从服务器搞定,

好了,开始实操。

1,实验环境搭建, ubuntu +mysql 5.7   , centos + mysql 5.6

2,主服务器建立2进制日志,每产生语句或磁盘变化,写进日志,

从服务器建立 relaylog , 主服务器授权复制账号,从服务器利用复制账号来监听主服务器的日志

主: centos  192.168.231.131

从: ubuntu 192.168.231.136

# 主库配置

log_bin=szh-bin

server-id=131

sync-binlog=1

binlog_do_db=plearnu

binlog-format=mixed

root@ubuntu:/etc/mysql/mysql.conf.d# vi mysqld.cnf

# 从库配置

server-id               = 136

#log_bin                        = /var/log/mysql/mysql-bin.log

expire_logs_days        = 10

max_binlog_size   = 100M

#binlog_do_db           = include_database_name

#binlog_ignore_db       = include_database_name

binlog_do_db =plearnu

binlog_ignore_db=mysql,test

log_bin = /var/log/mysql/mysql-slave-bin.log

为啥要写server_id

应为很多时候从服务器可能又有从服务器,也就是说一台mysql 服务器可能是主数据库,同时也是其他的从服务器。

所以要设置  server_id ,一般技术人员都喜欢那ip后三位写 id值

server_id=131

设置二进制日志, log-bin

log-bin=mysql-bin

binlog-format=mixed

binlog-format 二进制binlog日志的存储格式为混合类型

relay-log 是从库用来读取日志数据的地方

relay-log=mysql-relay

接下来需要设置 权限,让其他mysql服务器可以访问。

可以设置 192.168.*.* 可访问

>grant all on *.* to devs@"192.168.*.*" identified by '123456';

还需要开发授权 22 端口访问。

$ sudo apt-get install openssh-server

开发 3306 端口

038a523b56c99038157e604bf56d7357.png

发现3306端口未打开。

$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉 bind-address  ,意思是注释掉绑定ip的功能。开放 3306 端口。

a8d0e513440b05e7b00c8829dc836e4c.png

accd9c9424bd4c1b4ae17d8d4e1be5ad.png

开放 3306 端口,重新链接测试。

efc372606a4486902012c31ba78da524.png

注意配置 主从的时候都要写在 [mysqld] 节点下面。否则不会生效。

mysql> change master to master_host='192.168.231.131',master_user='root',master_password='123456' ,master_log_file='szh-bin.000005',master_log_pos=106;

ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

Slave is not configured or failed to initialize properly. You must at least set --server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

use mysql

drop table  slave_master_info;

drop table  slave_relay_log_info;

drop table  slave_worker_info;

drop table  innodb_index_stats;

drop table  innodb_table_stats;

root@ubuntu:/var/lib/mysql/mysql# ll *.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 engine_cost.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 gtid_executed.ibd

-rw-r----- 1 mysql mysql  114688 Nov  8 15:24 help_category.ibd

-rw-r----- 1 mysql mysql  245760 Nov  8 15:24 help_keyword.ibd

-rw-r----- 1 mysql mysql  131072 Nov  8 15:24 help_relation.ibd

-rw-r----- 1 mysql mysql 9437184 Nov  8 15:24 help_topic.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 plugin.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 server_cost.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 servers.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 slave_relay_log_info.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 time_zone.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 time_zone_leap_second.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 time_zone_name.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 time_zone_transition.ibd

-rw-r----- 1 mysql mysql   98304 Nov  8 15:24 time_zone_transition_type.ibd

root@ubuntu:/var/lib/mysql/mysql# rm -rf *.ibd

重启 mysql

sudo service mysql restart

删掉错误的表后,需要重建新表

sql地址在 lc-messages-dir = /usr/share/mysql

lc-messages-dir 选项中。

mysql>source /usr/share/mysql/mysql_system_tables.sql

再次执行语句,指定主库配置,在主库中执行 show master status; 可以知道 pos 参数和 log_file 参数。

mysql> change master to master_host='192.168.231.131',master_port=3306,master_user='root',master_password='root',master_log_file='szh-bin.000012',master_log_pos=120;

Query OK, 0 rows affected, 2 warnings (0.01 sec)

查看从库状态

mysql> show slave status\G

如果要修改 slave 需要 先

mysql > stop slave;

mysql> change master to master_host='192.168.231.131',master_port=3306,master_user='root',master_password='root',master_log_file='szh-bin.000014',master_log_pos=120;

如何知道主从是否配置成功

mysql> show slave status\G

如果

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

都是 Yes 那么成功,如果不是,那么检查配置,检查发现有个选择项没有配置

binlog_ignore_db=mysql,test

备份和不需要备份的库都要写清楚才行。

开始测试,先关闭从库同步功能,导初始数据,保证数据一致先,然后

mysql> stop slave;

mysql> show master status;

查看主库信息,重新写从库配置

mysql> change master to master_host='192.168.231.131',master_port=3306,master_user='root',master_password='root',master_log_file='szh-bin.000013',master_log_pos=120;

开启同步

mysql> start slave;

mysql> show slave status\G

修改主库数据测试,嗯。可以完成同步。

ddbaf7a219c131723dbdf831450fffb6.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值