Mysql
创建数据库、数据库表并插入数据:
- 创建数据库chinaskill
- 在数据库chinaskill中创建表testable
- 创建如下字段:
- id int 非空 主键
- Teamname 字符串 最大50
- remarks 字符串 最大255
- 插入如下数据:
- id 1
- Teamname “cloud”
- remarks “chinaskill”
- 查询id为1的Teamname字段
create database IF NOT EXISTS chinaskill;
use chinaskill;
create table testable (id int not null primary key, Teamname varchar(50), remarks varchar(255));
insert into testable values (1, "cloud", "chinaskill");
select Teamname, remarks from testable where id = 1;
在数据库中设置权限:
- 设置root用户所有数据库中所有表本地所有权限,密码000000
- 设置user用户所有数据库中所有表mysqk2主机slave权限,密码000000
- 改变slave数据库的master主机名为mysql1,用户名为user,密码为000000
grant all privileges on *.* to root@'%' identified by '000000' with grant option;
grant replication slave on *.* to 'user'@'mysql2' identified by '000000';
change master to master_host='mysql1',master_user='user',master_password='000000';
主从数据库
创建两台云主机 mysql1 和 mysql2 并配好 hosts 文件
hosts 文件:
192.168.200.3 mysql1
192.168.200.6 mysql2
从 controller 端用 scp 上传附件提供的 mariadb-repo.tar.gz 文件到云主机里
scp mariadb-repo.tar.gz 192.168.200.3:/root/
scp mariadb-repo.tar.gz 192.168.200.6:/root/
解压到 /opt 目录下
tar -zxvf mariadb-repo.tar.gz -C /opt/
local.repo
[mariadb]
name=mariadb
baseurl=file:///opt/mariadb-repo
enabled=1
gpgcheck=0
用
yum repolist
检查 yum 源是否配置正确
安装 mariadb 和 mariadb-server
yum -y install mariadb mariadb-server
启动数据库
systemctl start mariadb
初始化数据库
mysql_secure_installation
回车 enter for none
y 设置密码 000000
y n y y
在两边同时编写 server.cnf 文件,或 my.cnf 文件
vi /etc/my.cnf.d/server.cnf
或 vi /etc/my.cnf
[mysqld]
bind-address=0.0.0.0 ; mysql绑定IP
log_bin = mysql-bin ; 记录mysql日志文件
binlog_ignore_db = mysql ; 不记录mysql系统库(指定binlog-do-db和replicate-do-db时不写)
server_id = 1 ; 一般为ip第四段地址,要求数字不同!
binlog-do-db=chinaskill ; 记录chinaskill数据库日志,mysql1端
replicate-do-db=chinaskill ; 复制chinaskill数据库日志,mysql2端
在两边重启 mariadb 并进入数据库
systemctl restart mariadb
mysql -uroot -p000000
在主数据库处
grant all privileges on *.* to root@'%' identified by '000000' with grant option;
grant replication slave on *.* to 'user'@'mysql2' identified by '000000';
在从数据库处
change master to master_host='mysql1',master_user='user',master_password='000000';
start slave;
show slave status\G;
如果遇到
ERROR 1201 (HY000): Could not initialize master info structure for ''; more error messages can be found in the MariaDB error log
这个错误,先执行reset slave;
最后在主节点的chinaskill库里创建删除数据,看看从节点是否跟着创建删除数据,如果是,则主从数据库配置成功!
数据库读写分离
创建云主机 mycat
从 controller 端用 scp 上传附件提供的 mariadb-repo.tar.gz 和 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 和 schema.xml 文件到云主机里
scp mariadb-repo.tar.gz 192.168.200.8:/root/
scp Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 192.168.200.8:/root/
scp schema.xml 192.168.200.8:/root/
解压 -zxvf mariadb-repo.tar.gz 到 /opt 目录下
tar -zxvf mariadb-repo.tar.gz -C /opt/
local.repo
[mariadb]
name=mariadb
baseurl=file:///opt/mariadb-repo
enabled=1
gpgcheck=0
用
yum repolist
检查 yum 源是否配置正确
安装 java-1.8.0-openjdk 和 java-1.8.0-openjdk-devel
可用
yum list | grep java-
获取包名
yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
执行
java -version
确保 java 安装成功
解压 Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz 到 /usr/local 目录下
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
赋予 /user/local/mycat 目录权限
chmod -R 777 /usr/local/mycat/
schema.xml 文件,修改 url 和 password,请确保已经创建好数据库 test
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema>
<dataNode name="dn1" dataHost="localhost1" database="test" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.200.3:3306" user="root" password="000000">
<readHost host="hostS1" url="192.168.200.6:3306" user="root" password="000000" />
</writeHost>
</dataHost>
</mycat:schema>
<!--
schema name:虚拟数据库名。
sqlMaxLimit:配置默认查询数量。
database:为真实数据库名。
balance=“0”:不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。
balance=“1”:全部的readHost与stand by writeHost参与select语句的负载均衡,简单来说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2、S1、S2都参与select语句的负载均衡。
balance=“2”:所有读操作都随机的在writeHost、readhost上分发。
balance=“3”:所有读请求随机地分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3版本没有。
writeType=“0”:所有写操作发送到配置的第一个writeHost,第一个挂了需要切换到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件dnindex.properties中。
writeType=“1”:所有写操作都随机的发送到配置的writeHost。
-->
强制覆盖 /usr/local/mycat/conf/ 目录下的 schema.xml 文件
\cp -f schema.xml /usr/local/mycat/conf/
其中要在两个数据库中创建好 test 数据库
修改 schema.xml 文件的权限
chown root:root /usr/local/mycat/conf/schema.xml
修改 /usr/local/mycat/conf/ 目录下的 server.xml 文件
vi /usr/local/mycat/conf/server.xml
修改文件末
<user name="root">
<property name="password">000000</property>
<property name="schemas">USERDB</property>
删除文件末
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
启动 mycat 服务
/bin/bash /usr/local/mycat/bin/mycat start
若用
netstat -ntpl
命令查询到开放的 8066 和 9066 端口,则服务启动成功,否则仔细检测配置文件:是否 schemas虚拟数据库名 不对应,是否 password密码 未改正确,是否 user相关信息 未删除,是否 url地址 未写对,是否 database真实数据库 未创建等。
安装 MariaDB-client 服务
yum -y install MariaDB-client
(要大写)
进入 mysql 客户端
mysql -h127.0.0.1 -P8066 -uroot -p000000
可以从 9066 端口看出数据库读写分离的状态:
mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'
安装 MariaDB-client 服务
yum -y install MariaDB-client
(要大写)
进入 mysql 客户端
mysql -h127.0.0.1 -P8066 -uroot -p000000
可以从 9066 端口看出数据库读写分离的状态:
mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show @@datasource;'