在s201,s202,s203上安装MySQL
(安装jdk)
配置MySQL 5.7的yum源
sudo tee -a /etc/yum.repos.d/mysql-community.repo << EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=/yum/mysql-5.7-community/el/7/\$basearch/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
EOF
检查mysql源的信息
yum repolist enabled | grep mysql
安装mysql的server
sudo yum install -y mysql-community-server
启动mysql
sudo service mysqld start
获取启动日志中的默认初始密码
sudo grep ‘temporary password’ /var/log/mysqld.log
获取密码并赋给一个变量
PASSWORD=sudo grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'
使用root用户登录
mysql -uroot -p$PASSWORD
修改root用户的密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Lazy_123!’;
修改mysql远程登录权限
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘Lazy_123!’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
安装mycat(s201)
安装JDK并配置环境变量
解压安装包
修改配置文件
修改conf目录下主要以下三个注意配置文件
server.xml是Mycat服务器参数调整和用户授权的配置文件
schema.xml是逻辑库定义和表以及分片定义的配置文件
rule.xml是分片规则的配置文件
修改server.xml(修改了mycat的用户和逻辑的database)
root
bigdata
root
bigdata
true
修改schema.xml(配置逻辑库下的逻辑表,已经数据存放的mysql节点)
select user()
select user()
select user()
在三台mysql上分别创建数据库db1、db2、db3
然后在每一个database中创建表,有三张(travelrecord、company、hotnews)注意主键的名称
在s201上启动mycat
[centos@s201 /soft/mycat]$bin/mycat start
jps
连接mycat
端口:8066
lazy
root
campany:全局表,所有节点都有数据
travelread: 按范围插入
host:id自增, id哈希
mysql -uroot -pLazy_123!
mysql -h 192.168.10.104 -P 8066 -u root -p123456
mysql主从复制(s202–s205)
条件:
主从数据库版本一致
主从数据库名称一致
主server和server_id必须唯一
主机配置
修改my.conf文件:
在[mysqld]段下添加:
#主从复制的数据库的名字
binlog-do-db=master
#忽略mysql数据库
binlog-ignore-db=mysql
#启用二进制日志
log-bin=mysql-bin
#服务器唯一ID,一般取IP最后一段
server-id=16
重启mysql服务
sudo service mysqld restart
刷新权限
mysql> FLUSH PRIVILEGES;
查询master的状态
mysql> show master status;
注意:这里会生成二进制文件,mysql-bin.000004,指明了position为120,Binlog_Do_DB是master,小编就在这里出了错误,修改了my.conf后,没有重新启动mysql的服务,就没有产生新的二进制文件。
从机配置
修改my.conf文件
[mysqld]
server-id=17
配置从服务器
mysql>change master to master_host=‘192.168.255.202’,master_port=3306,master_user=‘root’,master_password=‘Lazy_123!’,master_log_file=‘mysql-bin.000003’,master_log_pos=306;
1
注意语句中间不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。
启动从服务器复制功能
Mysql>start slave;
检查从服务器复制功能状态:
mysql> show slave status
……………………(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)
mysql读写分离
修改mycat的schema.xml文件
balance:决定了哪些MySQL服务器参与到读SQL的负载均衡中,
1为全部的readHost与standby writeHost参与select语句的负载均衡
WriteType参数设置:
writeType=“0”, 所有写操作都发送到可用的writeHost上。
switchType 目前有三种选择:
2 :基于MySQL主从同步的状态决定是否切换
select user()