mysql主从配置实战记录
mysql主从配置实战记录
MySQL主从可以最低限度保证数据安全,以防数据库服务器坏了,系统崩溃,并且可以通过读写分离,降低数据库访问压力
准备工作:
1、准备两台服务器
主数据库 | 192.168.1.1 | master |
从数据库 | 192.168.1.2 | slave |
坑吧1:该ip地址为内网地址,如果是外网地址,需要保证数据库可以进行远程连接,连接的命令如mysql -h192.168.1.1 -P3306 -utest01 -p’123456’
2、启动两台服务器
3、关闭系统防火墙
查看防火墙状态
systemctl status firewalld
临时关闭防火墙命令。重启电脑后,防火墙自动起来。
systemctl stop firewalld
永久关闭防火墙命令。重启后,防火墙不会自动启动。
systemctl disable firewalld
打开防火墙命令
systemctl enable firewalld
注意:用root权限
4、保证两台服务器之间可以相互ping 通
具体操作步骤如下:
第一步:在主数据库master 上编辑mysql配置文件,做如下操作:
注:mysql安装方式的不同会导致mysql的配置文件的位置不一样,大家要根据自己的安装位置来找配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
bind_address = 0.0.0.0
server-id = 1 #IP地址最后一位
log_bin = /var/log/mysql/mysql-bin.log #开启binlog 日志
expire_logs_days = 10 #日志的缓存时间
max_binlog_size = 200M #日志的最大大小
binlog_do_db = test #同步的数据库名称
binlog_ignore_db = mysql #忽略同步的数据库
第二步:在从数据库slave上编辑mysql配置文件,做如下操作:
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
bind_address = 0.0.0.0
server-id = 2 #IP地址最后一位
expire_logs_days = 10 #日志的缓存时间
max_binlog_size = 200M #日志的最大大小
replicate_do_db = test #同步的数据库名称
replicate_ignore_db = mysql #忽略同步的数据库
第三步:在两台服务器上的mysql上配置一模一样的两个test数据库,做如下操作:
mysql> use test;
Database changed
mysql> CREATE TABLE tableA
(id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘ID’,
-> name
varchar(100) DEFAULT NULL COMMENT ‘名称’,
-> PRIMARY KEY (id
) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT=‘表A’;
第四步:在主数据master上创建一个同步权限的账户test01,用来同步数据,做如下操作:
mysql>CREATE USER ‘test01’@'192.168.1.2 IDENTIFIED BY ‘123456’; #创建用户
mysql>GRANT REPLICATION SLAVE ON . TO ‘test01’@‘192.168.1.2’ IDENTIFIED BY ‘123456’; #分配权限
mysql>flush privileges; #刷新权限
show master status; #查看主数据库master的状态,不要关闭窗口先 ,不要重启
第五步:在从数据库slave上做如下操作:
mysql> change master to
-> master_host=‘192.168.1.1’,
-> master_user=‘test01’,
-> master_password=‘123456’,
-> master_port=3306,
-> master_log_file=‘mysql-bin.000003’,
-> master_log_pos=73;
查看是否主从运行正常:show slave status \G;
坑2:master_log_file和master_log_pos为上面的命令show master status对照的值,并且都可能发生变化;
坑3:如果同步没有发挥作用,需要重新设置同步模式,先执行stop slave;在执行 start slave;