mysql主从库同步数据配置

首先要有多台服务器mysql

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

从服务器读取日志,更新本身的服务器。数据库

而后主从服务器搞定,ubuntu

好了,开始实操。centos

 

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

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

从服务器创建 relaylog , 主服务器受权复制帐号,从服务器利用复制帐号来监听主服务器的日志ide

 

主: centos  192.168.231.131测试

从: ubuntu 192.168.231.136ui

 

 

# 主库配置

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 端口

发现3306端口未打开。

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

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

开放 3306 端口,从新连接测试。

注意配置 主从的时候都要写在 [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

修改主库数据测试,嗯。能够完成同步。

 

相关文章
相关标签/搜索