#初始化 MariaDB 数据库
[root@db1 ~]# mysql_secure_installation
选项如下
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
3:配置数据库集群主节点 (db1节点)
[root@db1 ~]# vi /etc/my.cnf
log_bin = mysql-bin //记录操作日志
binlog_ignore_db = mysql //不同步 MySQL 系统数据库
server_id = 167 //这里的 id 直接设置会IP地址最后的数字
[root@db1 ~]# systemctl restart mariadb //重启服务,这样配置才会生效
4:开放主节点的数据库权限
#在节点 db1 上操作
[root@db1 ~]# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> grant all privileges on * . * to root@`%` identified by "000000"; //给予任何客户端可以 以root用户登录到数据库。
#在节点 db1 数据库上创建一个 user 用户,让从节点 db2 连接,并赋予从节点同步主节点数据库的权限
MariaDB [(none)]> grant replication slave on * . * to `user`@`db2` identified by "000000";
5:配置从节点 db2 主机同步主节点 db1
[root@db2 ~]# vi /etc/my.cnf //进入配置文件
server_id = 168 #添加server_id ,注意这里的ID是唯一的,不能和master server id 一样
[root@db2 ~]# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> change master to master_host='db1',master_user='user',master_password='000000'; //配置连接信息
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G; //这里会给予截图,帮助大家理解
# 查看到这两个为 YES 则从节点开启成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
mysql读写分离
6:验证主从数据库的同步功能
一:在 db1 节点上操作:
[root@db1 ~]# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> create database test; //创建一个表
MariaDB [(none)]> use test //编辑它
MariaDB [test]> create table company(id int not null primary key,name varchar(50),addr varchar(255)); //创建表字段
MariaDB [test]> insert into company values(1,"facebook","usa"); //添加字段
MariaDB [test]> select * from company; #查询表字段
+----+----------+------+
| id | name | addr |
+----+----------+------+
| 1 | facebook | usa |
+----+----------+------+
1 row in set (0.01 sec)
二:在 db2 节点上操作:
[root@db2 ~]# mysql -uroot -p000000 //进入数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
MariaDB [(none)]> select * from test.company; //显示出facebook 则成功
+----+----------+------+
| id | name | addr |
+----+----------+------+
| 1 | facebook | usa |
+----+----------+------+
1 row in set (0.00 sec)
9:通过 Mycat 服务查看数据库
[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -p000000 //连接数据库
MySQL [(none)]> use USERDB #使用数据库
MySQL [(none)]> show databases; #这里我们就可以看到有一个表
+----------+
| DATABASE |
+----------+
| USERDB |
+----------+
1 row in set (0.002 sec)
MySQL [USERDB]> select * from company; #使用sql查找字段,我们可以看到我们原先创建的字段 facebook
+----+----------+------+
| id | name | addr |
+----+----------+------+
| 1 | facebook | usa |
+----+----------+------+
1 row in set (0.003 sec)
10:通过 Mycat 服务添加数据表
MySQL [USERDB]> insert into company values(2,"鸡你太美","usr"); //这里我们添加数据
Query OK, 1 row affected, 1 warning (0.012 sec)
MySQL [USERDB]> select * from company; //查询数据库字段,可以看到 “鸡你太美”,已经添加成功了,只不过中文显示乱码而已。
+----+----------+------+
| id | name | addr |
+----+----------+------+
| 1 | facebook | usa |
| 2 | ???? | usr |
+----+----------+------+
2 rows in set (0.002 sec)