数据库版本5.7.25
主数据库:192.168.12.243
从数据库: 192.168.12.244
mysql的安装
可以参考:https://www.jianshu.com/p/891d02f3939a
=========maser服务器配置=========
1 my.cnf 主服务器配置
centos 7 一般在/etc/my.cnf
==========数据库集群主服务器配置!!!mysqld配置下边==============
[mysqld]
#server-id 必须唯一
server-id=243
##启动MySQ二进制日志系统 存储地址
log_bin=/data/mysql/mysql-bin
# 需要同步的数据库
binlog_do_db=database_name
#确保binlog日志写入后与硬盘同步
sync_binlog = 1
#跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
#bin-log日志文件格式,设置为MIXED可以防止主键重复。
binlog_format = mixed
2 导出master中的数据库,然后再导入到slave数据,导出前先锁定数据库,保证双方的数据在同步前一致
mysql> flush tables with read lock;
导出master数据库中多余的huanqiu库(master数据库的root用户登陆密码:123456)
mysqldump -uroot -p database_name > /data/database_name.sql
3 设置数据库同步权限
mysql> grant replication slave,replication client on *.* to slave@'192.168.12.244' identified by "password";
mysql> flush privileges;
温馨提示:
权限查看方式
mysql> show grants;
mysql> show grants for slave@'192.168.12.244';
4 查看主服务器master状态(注意File与Position项,从服务器需要这两项参数)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 120 | database_name | mysql | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
========= slave服务器配置=========
1 my.cnf 主服务器配置
1==========数据库主从配置从服务器配置mysqld节点下===============
#设置从服务器id,必须于主服务器不同
server-id=244
#启动MySQ二进制日志系统
log-bin=/data/mysql/mysql-bin
#需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
replicate-do-db=database_name
#跳过所有的错误错误,继续执行复制操作
slave-skip-errors = all
2在slave数据库中导入从master传过来的数据。
mysql> CREATE DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci; #先创建一个huanqiu空库,否则下面导入数据时会报错说此库不存在。
mysql> use database_name;
mysql> source /opt/database_name.sql; #导入master中多余的数据。
3配置主从同步指令
mysql> stop slave; #执行同步前,要先关闭slave
mysql> change master to master_host='192.168.12.243',master_user='slave',master_password='password',master_log_file='mysql-bin.000007',master_log_pos=120;
mysql> start slave;
mysql> show slave status \G;
.......
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 182.148.15.238
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000007
Read_Master_Log_Pos: 120
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 279
Relay_Master_Log_File: mysql-bin.000007
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: huanqiu
Replicate_Ignore_DB: mysql
.............
Seconds_Behind_Master: 0
如上,当IO和SQL线程的状态均为Yes,则表示主从已实现同步了!
至此,主从同步环境已经实现!
主从配置另外一种方法
主服务器my.cnf配置
# ===================设置主从备份主服务器配置部分===================
[mysqld]
#server-id 必须唯一
server-id=150
##启动MySQ二进制日志系统 存储地址
log_bin=/opt/mysql-8.0.27/data/mysql-bin
# 需要同步的数据库
#binlog_do_db=szmachine
#binlog_do_db=jianzhengtong
# 配置需要忽略的库,其他库就自动同步了!!!
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
#确保binlog日志写入后与硬盘同步
sync_binlog = 1
#跳过现有的采用checksum的事件,mysql5.6.5以后的版本中binlog_checksum=crc32,而低版本都是binlog_checksum=none
#bin-log日志文件格式,设置为MIXED可以防止主键重复。
binlog_format = mixed
从服务器配置
[mysqld]
#==============从服务器配置项==================
#设置从服务器id,必须于主服务器不同
server-id=151
#启动MySQ二进制日志系统
log-bin=/opt/mysql-8.0.27/data/mysql-bin
#需要同步的数据库名。如果不指明同步哪些库,就去掉这行,表示所有库的同步(除了ignore忽略的库)。
#replicate-do-db=szmachine
#replicate-do-db=jianzhengtong
#配置忽略的数据库
replicate-ignore-db=information_schema
replicate-ignore-db=mysql
replicate-ignore-db=performance_schema
#跳过所有的错误错误,继续执行复制操作
slave-skip-errors = all
网友评论