修改配置网卡
在第二个虚拟机中,生成全新mac地址
重启网络
// 重启网络 service network restart //查看ip地址 ip addr
修改mysql配置文件,更改uuid
在第二个服务器上,修改mysql的uuid
// 编辑配置文件 vi /var/lib/mysql/auto.cnf // 将server-uuid更改
启动MySQL并查看
//将两台服务器的防火墙关闭 systemctl stop firewalld //启动两台服务器的mysql service mysqld restart //启动两台服务器的mycat cd /root/mycat/bin ./mycat restart //查看监听端口 netstat -ant|grep 3306 netstat -ant|grep 8066 //使用sqlyog测试连接 主从复制
主从复制的概念
为了使用Mycat进行读写分离,我们先要配置MySQL数据库的主从复制。
从服务器自动同步主服务器的数据,从而达到数据一致。
进而,我们可以写操作时,只操作主服务器,而读操作,就可以操作从服务器了。
原理:主服务器在处理数据时,生成binlog日志,通过对日志的备份,实现从服务器的数据同步。
主服务器的配置
在第一个服务器上,编辑mysql配置文件
// 编辑mysql配置文件 vi /etc/my.cnf //在[mysqld]下面加上: log-bin=mysql-bin # 开启复制操作 server-id=1 # master is 1 innodb_flush_log_at_trx_commit=1 sync_binlog=1登录mysql,创建用户并授权
// 登录mysql mysql -u root -p // 去除密码权限 SET GLOBAL validate_password_policy=0; SET GLOBAL validate_password_length=1; // 创建用户 CREATE USER 'user'@'%' IDENTIFIED BY 'gonghr'; // 授权 GRANT ALL ON *.* TO 'user'@'%';重启mysql服务,登录mysql服务
// 重启mysql service mysqld restart // 登录mysql mysql -u root -p查看主服务器的配置
// 查看主服务器配置 show master status;
从服务器的配置
在第二个服务器上,编辑mysql配置文件
// 编辑mysql配置文件 vi /etc/my.cnf // 在[mysqld]下面加上: server-id=2登录mysql
// 登录mysql mysql -u root -p // 执行 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; source /usr/share/mysql/mysql_system_tables.sql;重启mysql,重新登录,配置从节点
// 重启mysql service mysqld restart // 重新登录mysql mysql -u root -p // 执行 change master to master_host='主服务器ip地址',master_port=3306,master_user='user',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=4642;重启mysql,重新登录,开启从节点
// 重启mysql service mysqld restart // 重新登录mysql mysql -u root -p // 开启从节点 start slave; // 查询结果 show slave status\G; //Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。
测试
sqlyog连接主服务器
-- 主服务器创建db1数据库,从服务器会自动同步 CREATE DATABASE db1;sqlyog连接从服务器
-- 从服务器创建db2数据库,主服务器不会自动同步 CREATE DATABASE db2;
启动失败的解决方案
启动失败:Slave_IO_Running为 NO 方法一:重置slave slave stop; reset slave; start slave ; 方法二:重设同步日志文件及读取位置 slave stop; change master to master_log_file=’mysql-bin.000001’, master_log_pos=1; start slave ; 读写分离
读写分离的概念
写操作只写入主服务器,读操作读取从服务器。
在主服务器上修改server.xml
user标签主要用于定义登录mycat的用户和权限。如上面定义用户名mycat和密码123456,该用户可以访问的schema的HEIMADB逻辑库。
<user defaultAccount="true"> <property>123456</property> <property>HEIMADB</property> <!-- 表级 DML 权限设置 --> <!-- <privileges check="false"> <schema dml="0110" > <table dml="0000"></table> <table dml="1111"></table> </schema> </privileges> --> </user>