环境:1、(主) linux centOS 7 64位
2、(从) linux centOS 7 64位
3、(mysql)最好要求版本一致,从库不能比主库版本高 建议5.7
centos 7 默然安装mariadb,安装mysql 5.7参考如下链接文档:
centos 7安装mysql 5.7 :https://juejin.im/post/5c088b066fb9a049d4419985 (转载)
一、主库配置
1、更改主库/etc/my.cnf 配置文件
vim /etc/my.cnf
[mysqld]
lower_case_table_names=1
max_connections=7000
group_concat_max_len = 202400
max_allowed_packet = 128M
#开启gtid功能
gtid-mode=on
enforce-gtid-consistency=1
#设置server_id,一般设置为IP,注意要唯一
server_id=840
复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步)
replicate_wild_ignore_table=mysql.%
#指定哪个数据库同步,本次只同步newerp库
replicate_wild_do_table=newerp.%
#开启二进制日志功能,可以随便取,最好有含义关键就是这里了
log-bin=edu-mysql-bin
为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
主从复制的格式 mixed,statement,row,默认格式是statement
binlog_format=mixed
二进制日志自动删除/过期的天数。默认值为0,表示不自动删除。
expire_logs_days=7
跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
master_info_repository=TABLE
relay_log_info_repository=TABLE
2、重启mysql数据库
systemctl restart mysqld
3、创建同步账户和查看master信息
[tomcat@iZ2zeij9pa0qnzjt5wcr4kZ ~]$ msyql -uroot -p
Enter password:
mysql>GRANT REPLICATION SLAVE ON . to ' slave_account '@'%' identified by '123456';
mysql>FLUSH PRIVILEGES;
mysql> SHOW MASTER STATUS\G;
1. row
File: edu-mysql-bin.000031
Position: 1210791
Binlog_Do_DB: newerp
Binlog_Ignore_DB: mysql
Executed_Gtid_Set: 2abeaffc-6158-11e7-8222-00163e03196b:1-16151
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>
注:'slave_account' 为主库创建同步用户,'123456'为数据库slave_account用户密码。
注:记录下File: edu-mysql-bin.000031和 Position: 1210791,后面从库会使用到。
4、mysqldump导出newerp库到从库
mysqldump -uroot -p123456 -hlocalhost --single-transaction --master-data=2 newerp > /data/newerp_back.sql
写了一个脚本供参考
date +%Y-%m-%d_%H-%M-%S
5、把备份文件scp传到从库
scp -P 22312 /data/newerp_back.sql root@从库IP:/root/
密码:
主库配置完成,开始配置从库。
二、从库配置
1、从库 /etc/my.cnf 配置
[mysqld]
gtid-mode=on #开启gtid,5.6版本之后的功能
enforce-gtid-consistency=1
server_id=3026 #id必填项,不要与主库id相同
replicate-ignore-db=mysql #表示不同步mysql库,可以写多个
replicate-do-db=newerp #表示只同步newerp库,可以写多个
2、更改完重启mysqld服务
systemctl restart mysqld
3、导入newerp_back.sql数据
[root@localhost ~]# mysql -uroot -p < /root/newerp_back.sql
4、进入mysql
mysql> change master to master_host='10.175.18.40',master_user='slave_account',master_password='123456',master_log_file='edu-mysql-bin.000031',master_log_pos=1210791;
mysql> start slave; #开启同步 ,stop slave 停止同步,reset master 重置主库信息
mysql> `show slave status\G;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 37
Current database: NONE1. row
Slave_IO_State: Waiting for master to send event
Master_Host: 10.175.18.40
Master_User: slave_account
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: edu-mysql-bin.000032
Read_Master_Log_Pos: 1031964
Relay_Log_File: localhost-relay-bin.000004
Relay_Log_Pos: 1032185
Relay_Master_Log_File: edu-mysql-bin.000032
Slave_IO_Running: Yes #两个都为YES表示成功开启同步
Slave_SQL_Running: Yes #两个都为YES表示成功开启同步
Replicate_Do_DB: newerp
Replicate_Ignore_DB: mysql
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1031964
Relay_Log_Space: 1032606
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 840
Master_UUID: 2abeaffc-6158-11e7-8222-00163e03196b
Master_Info_File: /var/lib/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set: 2abeaffc-6158-11e7-8222-00163e03196b:10626-16016
Executed_Gtid_Set: 2abeaffc-6158-11e7-8222-00163e03196b:1-16016
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec)ERROR:
No query specifiedmysql>
注:master_host='10.175.18.40'为主库IP,master_user='slave_account' 为主库创建同步用户,master_password='123456'为数据库slave_account用户密码,master_log_file='edu-mysql-bin.000031',master_log_pos=1210791;两项从主库获取。从主库执行sql命令:SHOW MASTER STATUS;
5、测试
在主库创建新表或插入新数据,看看从库是否同步。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。