主要命令
- [root@mysql59 ~]# yum –y install mysql-server mysql
- [root@mysql59 ~]# systemctl start mysqld
- [root@mysql59 ~]# vim /etc/my.cnf.d/mysql-server.cnf
- [mysqld]
- server-id=59
- log-bin=mysql59
- :wq
- [root@mysql59 ~]# systemctl restart mysqld
- //用户授权
- [root@mysql59 ~]# mysql
- mysql> create user repluser@"%" identified by "123qqq...A"; 创建用户
- Query OK, 0 rows affected (0.11 sec)
- mysql> grant replication slave on *.* to repluser@"%"; 授予权限
- Query OK, 0 rows affected (0.09 sec)
- //查看日志信息
- mysql> show master status;
- +----------------+----------+--------------+------------------+-------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
- +----------------+----------+--------------+------------------+-------------------+
- | mysql59.000001 | 667 | | | |
- +----------------+----------+--------------+------------------+-------------------+
- 1 row in set (0.00 sec)
配置slave服务器MySQL60
- //指定server-id 并重启数据库服务
- [root@mysql60 ~]# yum –y install mysql-serv????er mysql
- [root@mysql60 ~]# systemctl start mysqld
- [root@mysql60 ~]# vim /etc/my.cnf.d/mysql-server.cnf
- [mysqld]
- server-id=60
- :wq
- [root@mysql60 ~]# systemctl restart mysqld
- //登陆服务指定主服务器信息
- [root@mysql60 ~]# mysql
- mysql> change master to master_host="192.168.88.59" , master_user="repluser" , master_password="123qqq...A" ,master_log_file="mysql59.000001" , master_log_pos=667;
- Query OK, 0 rows affected, 8 warnings (0.34 sec)
- //启动slave进程
- mysql> start slave ;
- Query OK, 0 rows affected, 1 warning (0.04 sec)
- //查看状态信息
- mysql> show slave status \G
- *************************** 1. row ***************************
- Slave_IO_State: Waiting for source to send event
- Master_Host: 192.168.88.59
- Master_User: repluser
- Master_Port: 3306
- Connect_Retry: 60
- Master_Log_File: mysql59.000001
- Read_Master_Log_Pos: 667
- Relay_Log_File: mysql60-relay-bin.000002
- Relay_Log_Pos: 322
- Relay_Master_Log_File: mysql59.000001
- Slave_IO_Running: Yes //IO线程
- Slave_SQL_Running: Yes //SQL线程
- Replicate_Do_DB:
- Replicate_Ignore_DB:
- Replicate_Do_Table:
- Replicate_Ignore_Table:
- Replicate_Wild_Do_Table:
- Replicate_Wild_Ignore_Table:
- Last_Errno: 0
- Last_Error:
- Skip_Counter: 0
- Exec_Master_Log_Pos: 667
- Relay_Log_Space: 533
- Until_Condition: None
- Until_Log_File:
- Until_Log_Pos: 0
- Master_SSL_Allowed: No
- Master_SSL_CA_File:
- Master_SSL_CA_Path:
- Master_SSL_Cert:
- Master_SSL_Cipher:
- Master_SSL_Key:
- Seconds_Behind_Master: 0
- Master_SSL_Verify_Server_Cert: No
- Last_IO_Errno: 0
- Last_IO_Error:
- Last_SQL_Errno: 0
- Last_SQL_Error:
- Replicate_Ignore_Server_Ids:
- Master_Server_Id: 59
- Master_UUID: 38c02165-005e-11ee-bd2d-525400007271
- Master_Info_File: mysql.slave_master_info
- SQL_Delay: 0
- SQL_Remaining_Delay: NULL
- Slave_SQL_Running_State: Replica has read all relay log; waiting for more updates
- Master_Retry_Count: 86400
- Master_Bind:
- Last_IO_Error_Timestamp:
- Last_SQL_Error_Timestamp:
- Master_SSL_Crl:
- Master_SSL_Crlpath:
- Retrieved_Gtid_Set:
- Executed_Gtid_Set:
- Auto_Position: 0
- Replicate_Rewrite_DB:
- Channel_Name:
- Master_TLS_Version:
- Master_public_key_path:
- Get_master_public_key: 0
- Network_Namespace:
- 1 row in set, 1 warning (0.00 sec)
- mysql>
主(master)数据库服务器角色
????????网站连接后用来存储数据的服务器(只有一台)
从(slave)数据库服务器角色
????????自动同步主服务器上的数据(可以有很多台)
配置mysql主从
54连接53把53上面的命令copy过去在54上执行一遍
IP 192.168.88.53 做master服务器
1.启用binlog日志文件,配置文件:/etc/my.cnf.d/mysql-server.cnf
2.用户授权
?create user repluser@"%"? identified by "123"
grant replication slave on *.*? to repluser@"%";
3.查看正在使用的binlog日志文件
主从同步的工作原理
Slave_IO_Running: yes
负责联系master 复制master主机 bnlog 日志文件里的sql命令到本机的relay-log文件里
从主服务器总mysql主机名-relay-log? 中继日志文件
Slave_SQL_Running:yes??
执行本机relay-log里的日志文件,实现与master内容一致
必须io线程和sql线程是yes
单向同步,永远是从去同步主上的内容.
排错方法
Last_IO_Error:???? IO线程报错信息
报错原因 通常是change master to 的配置项不正确
解决办法:? 重新指定主服务? stop slave? change msater to? start slave;
Last_SQL_Error:? SQL线程报错信息
通常是执行relay-log文件里的sql命令时 失败 导致的
show slave status \G
可以竖着看
配置"一主多从"结构
配置数据读写分离结构(主从同步+mycat软件实现)
IP 192.168.88.54 做clave服务器
指定server_id 并重启数据库服务,指定主服务器信息,启动slave进程,查看状态信息
show slave status
? ? ? ? 1.指定server_id (不能重复,唯一的)? 重启binlog服务器
要手动同步? 主服务器 比自己多的
在master 服务器执行完全备份? 把备份文件copy给slave主机
show master status;
]#mysqldump -B bbsdb > /root/bbsdb.sql
]# scp /root/bbsdb.sql? root@192.168.88.55/root/
在slave服务器执行 备份文件 恢复数据
mysql? <?? /rootbbsdb.sql
在slave 服务器执行? 备份文件? 恢复数据
??????? 2.指定主服务器信息
? ? ? ? 服务器的ip? 用户名? 密码??? 日志文件 偏移量
??????? 3.启动slave
??????? 4.查看状态信息
一主一从
一主多从
主从主
主主结构
主从同步
master服务器配置
??????? 1.启用binlog日志
??????? 2.创建用户并授权
??????? 3.查看正在使用的日志文件
???????
slave服务器的配置
??????? 1.指定server_id (不能重复,唯一的)? 重启binlog服务器
??????? 2.指定主服务器信息
? ? ? ? 服务器的ip? 用户名? 密码??? 日志文件 偏移量
??????? 3.启动slave
??????? 4.查看状态信息
Slave_IO_Running: yes
Slave_SQL_Running:yes
部署mysql数据读写分离结构+mycat2
理论:把客户端访问数据库服务的查询访问select 和 写访问 insert 分别给不同的数据库服务器处理.
功能:减轻单台数据库服务器的并发访问压力
如何实现数据读写分离
??????? 人肉分离?? select? ---------->?? 57
???????????????????????? insert? ----------->?? 56
??????????????????????? proxy?? ----------->?? 58
???????? 通过搭建读写分离服务实现
能够实现数据读写分离服务的软件(中间件)有哪些
mysql-proxy? mycat,mycat2(可以实现读写分离,高可用,分布式存储等功能)
环境准备:后端两台服务器一定是主从结构,配置,mysql主从结构
配置mycat服务器?? 192.168.88.58
1.安装mycat
2.修改配置
????????????????设置客户端连接mucat 服务器时? 使用的用户名和密码:定义客户端连接mycat服务使用用户及密码:
????????????????设置mycat服务启动时连接的数据库服务器
??????????????? 根据配置在本机运行mysql服务并创建plj用户
3.启动mycat
mycat服务监听的是8066端口? mysql默认访问3306端口
三.连接mycat服务配置读写分离
mysql -h127.0.0.1 -P8066? -umycat -p654321
添加数据源? 定义数据库服务器的ip地址
- /*+ mycat:createdatasource{
- "name":"whost56", "url":"jdbc:mysql://192.168.88.56:3306","user":"plja","password":"123456"}*/;
测试配置
mysql -h192.168.88.58 -Pmycat服务的端口? -umycat? -p654321
2.在数据服务器 上添加plja用户
3.创建集群 把57()和56()组成工作组
删除
ls /usr/local/mycat/conf/datasources/
所添加的数据源所在位置
/*+mycat:showDataSources{}*/ \G
json命令查看数据源
- /*!mycat:createcluster{
- "name":"rwcluster",
- "masters":["whost56"],
- "replicas":["rhost57"]
- }*/ ;
4. 指定数据库服务器的角色
master 角色服务器负责insert 访问
slave角色服务器负责
5.定义集群出来读访问的策略
???????????????? 集群处理查询访问的方式
支持的策略有:BALANCE_ALL? 获取集群中所有
默认的是发给所有BALANCE_ALL_READ? 获取集群中允许读数据源
BALANCE_NONE 获取集群中允许
6.创建网站存储数据使用的库,并定义? 库存储数据使用rwcluster