Mysql数据库主从复制配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库主从复制配置相关的知识,希望对你有一定的参考价值。
备注:
- 以下操作需要在数据库已经安装的前提下进行,本例子需要两个mysql数据库服务器:一台作为Master主数据库,一台作为Slave从数据库.
- Mysql数据库可以同时配置Master和Slave,既可以做主数据库,也可以做从数据库。
1,配置Master主数据库
- 操作系统 Centos7
- 数据库版本 Mysql5.7
- IP地址 192.168.20.11
- 端口号 3306
1.1,修改my.cnf文件配置
# vim /etc/my.cnf
server-id = 1 #唯一的(确保每个数据库的server-id值都是唯一的) binlog_format = MIXED #binlog日志格式,mysql默认采用statement,建议使用mixed log_bin = master-bin #binlog日志文件 log_bin_index = master-bin.index expire-logs-days = 14 #日志过期清理时间 sync_binlog = 0 binlog_cache_size = 4M #binlog缓存大小 max_binlog_cache_size = 8M #binlog最大缓存大小 max_binlog_size = 1024M #每个日志文件大小 log_slave_updates binlog_do_db = energy #设置同步的表 binlog_ignore_db = mysql #不需要同步的表
1.2,重启服务
# service mysqld restart
1.3,创建同步的用户
1.3.1,登录mysql数据库
# mysql -uroot -proot
1.3.2给Slave数据库创建用于连接的账户
# grant replication slave on *.* to ‘slave‘ @‘192.168.20.%‘ identified by ‘slave‘;
注: 创建账户slave,密码slave; 权限:replication slave(复制需要的权限,监视和管理复制账号权限);
IP允许的范围:192.168.20.%(允许192.168.20开头的网段,正式环境请配置指定从数据库服务器IP)。
1.4,查看master状态
mysql> show master status; +-------------------+------+-------------+----------------+---------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-------------------+-------+-------------+---------------+--------------+ | master1-bin.000001 | 154 | energy | mysql | | +-------------------+--------+------------+--------------+-----------------+ 1 row in set (0.00 sec)
注: File:二进制日志文件,记录数据库变化(数据库,表,视图,函数等增删改),数据同步的关键文件,Slave数据库连接的时候会用到。
Position:记录位置,Slave数据库连接的时候会用到。
2,配置Slave从数据库(例:192.168.20.21)
- 操作系统 Centos7
- 数据库版本 Mysql5.7
- IP地址 192.168.20.21
- 端口号 3306
2.1,修改my.cnf文件配置
# vim /etc/my.cnf
添加如下配置:
server-id = 2 relay-log = slave-relay-bin relay-log-index = slave-relay-bin.index
2.2,重启服务
# service mysqld restart
2.3,启动同步功能
2.3.1,登录mysql数据库
# mysql -uroot -proot
2.3.2,连接master数据库
change master to master_host=‘192.168.20.11‘,master_port=3306,master_user=‘slave‘,master_password=‘slave‘,master_log_file=‘master-bin.000001‘,master_log_pos=154;
注:
- master_host:Master数据库地址
- master_port:Master数据库端口
- master_user:用户名
- master_log_file:对应Master数据库二进制日志文件
- master_log_pos:对应Master数据库Position
2.3.3,启动slave:
#start slave;
2.4,查看运行状态
# show slave status\G
当这下面两个属性为Yes的时候,配置成功。
Slave_IO_Running: Yes Slave_SQL_Running: Yes
3,测试主从复制功能
3.1,给Master数据库添加数据
3.1.1,登录Master数据库(192.168.20.11)
# mysql -uroot -proot
3.1.2,创建数据库energy并进入
mysql> create database `energy` default character set utf8 collate utf8_general_ci; mysql> show databases; mysql> use energy;
3.1.3,创建表test,并插入一条语句
mysql> create table test(id int primary key,name varchar(100) not null)default charset=utf8; mysql> insert test(id,name) values(1,‘张三‘);
查询:
mysql> select * from test;
3.1.4,创建视图v_test
mysql> create view v_test as select id,name from test;
3.1.5,创建存储过程p_test
把分隔符换成//
mysql> delimiter //
创建存储过程
mysql> create procedure p_test () begin declare a int; set a=12; select a from dual; end//
3.2,查看Slave数据库是否同步
注:查看Master数据库energy,表test,视图v_test,存储过程p_test是否同步
3.2.1,登录Slave数据库(192.168.20.21)
[[email protected] ~]# mysql -uroot -proot
3.2.2,查看数据库energy
mysql> show databases;
注:这里显示有energy,说明数据同步成功。
3.2.3,进入energy
mysql> use energy
3.2.4,查询test表
mysql> select * from test;
3.2.5,查询视图
mysql> select * from v_test;
注:表和视图均查询成功,说明同步成功。
3.2.6,查询存储过程p_test
mysql> show create procedure p_test;
注:同步成功。
以上是关于Mysql数据库主从复制配置的主要内容,如果未能解决你的问题,请参考以下文章