MySQL数据管理6-hj
配置主从同步的步骤环境准备
从一定要有主库比自己多个的数据
systemctl stopfirewalld
setenforce0
物理连接能通
配置主数据库服务器
1用户授权
grantreplicationslaveon *.*to plj@"%"identified by"123456";
2 修改配置文件
vim /etc/my.cnf
server_id=12
log_bin=master12
log_format="mixed"
:wq
3 重启数据服务
systemctlrestartmysqld
4 查看当前使用的 binlog日志信息
mysql-uroot -p123123
mysql> show master status;
配置从数据库服务器
1验证主库授权用户
mysql-h192.168.4.12 -uplj -p123456
mysql>
2修改配置文件
vim /etc/my.cnf
server_id=11
log_bin=slave11 #可选
log_format="mixed"
:wq
3重启数据服务
systemctlrestartmysqld
4管理员登录把自己指定为从数据库服务器
mysql -uroot-p654321
mysql> showslave status\G;
mysql> changemastertomaster_host="192.168.4.12",master_user="plj",master_password="123456",master_log_file="master12.000001",master_log_pos=154;
5启动slave 进程
mysql> startslave;
6查看slave 进程状态信息
mysql> showslave status\G;
slave_io_running: yes
slave_sql_running: yes
验证主从同步配置
客户端访问主数据库服务器,创建库 表记录 ,在从数据服务器上也能够看到
主从同步工作原理
slave_io_running:把主数据库服务器上binlog日志里的sql 存放到本机的中继日志文件里。
Last_IO_Error: 报错信息
出错原因: 从服务器连接不上主数据库服务器
ping firewalld selinux
change master to 的配置信息错误。
slave_sql_running:执行本机中继日志文件里的sql命令。
Last_SQL_Error: 报错信息
mysql>stopslave;
mysql>changemasterto选项=值,选项=值;
mysql>startslave;
cd /var/lib/mysql/
master.info 连接主数据库服务器的信息
relay-log.info中继日志文件
localhost-relay-bin.xxxxxx 中继日志文件
localhost-relay-bin.index 中继日志索引文件
把一台数据库服务器恢复为独立的数据库服务器。
#cd /var/lib/mysql
#rm -rfmaster.info> #systemctlrestart mysqld
让从数据库服务器临时不同步数据(想同步再启动就可以了)
mysql>stopslave ;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
day06
mysql主从同步结构模式
一主一从
一主多从
主从从
主主结构(互为主从)
+++++++++++++++++++++++++++++
mysql主从同步配置参数
主数据库服务器使用的配置参数
/etc/my.cnf
binlog_do_db=数据库名,数据库名 #只允许同步的库
binlog_ignore_db=数据库名,数据库名#只不允许同步的库
:wq
#systemctlrestart mysqld
从数据库服务器使用的配置参数
/etc/my.cnf
log_slave_updates # 允许级联复制
relay_log=名 #中继日志文件名
replicate_do_db=数据库名,数据库名 #只同步的库
replicate_ignore_db=数据库名,数据库名#只不同步的库
:wq
#systemctlrestart mysqld
++++++++++++++++++++++++++++++
中间件maxscale
读写分离 (maxscale +mysql主从同步)
maxscale-2.1.2-1.rhel.7.x86_64.rpm
需求 在主机192.168.4.10配置读写分离服务,客户端连接后,
把执行的查询请求分配给192.168.4.11主机,执行的写请求分
配给192.168.4.12主机,
配置
1把11 主机配置为12的从数据库服务器
2 在主机10运行实现读写分离功能的服务maxscale
2.1 安装软件包
rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm
2.2 修改配置文件
# sed -i'/#/d' /etc/maxscale.cnf
# vim /etc/maxscale.cnf
# cat /etc/maxscale.cnf
threads=1
type=server
address=192.168.4.12
port=3306
protocol=MySQLBackend
type=server
address=192.168.4.11
port=3306
protocol=MySQLBackend
type=monitor
module=mysqlmon
servers=server1,server2
user=scalemon
passwd=111111
monitor_interval=10000
type=service
router=readwritesplit
servers=server1,server2
user=maxscale
passwd=111111
max_slave_connections=100%
type=service
router=cli
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default
port=6606
#
配置文件说明
0 设置服务运行启动的线程数量
1 数据库服务器成员
2 监控数据库服务器成员列表
user=scalemon //用户名
passwd=111111 //密码
3 指定在那些数据库服务器之间做读写分离
user=maxscale //用户名
passwd=111111//密码
4 定义管理服务
5 读写分离服务监控的端口号
6 指定管理服务监听的端口号
2.2根据配置文件的设置添加授权用户(12 11)
scalemon用户
grant replication slave, replication client on *.* to scalemon@"%"identified by “111111”;//创建监控用户
maxscale用户
grant select on mysql.* to maxscale@'%'> 2.4 启动maxscale
#maxscale-f/etc/maxscale.cnf
#netstat -utnalp| grep :4006
#netstat -utnalp| grep :6606
#maxadmin -uadmin-pmariadb -P6606
MaxScale> list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port| Connections | Status
-------------------+-----------------+-------+-------------+--------------------
server1 | 192.168.4.12 |3306 | 0 | Master, Running
server2 | 192.168.4.11 |3306 | 0 | Slave, Running
-------------------+-----------------+-------+-------------+--------------------
MaxScale>quit
#
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在主从数据库服务器上客户端访问数据时使用的连接用户
mysql>grant all on*.*to student@"%"> "123456";
客户端访问
#which mysql
#mysql-h192.168.4.10 -P4006 -ustudent -p123456
mysql>select ---->11 从
mysql>insert ---->12 主
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mysql性能调优
数据库服务器处理客户端的访问速度特别慢,可能是由哪些原因
造成的?
1 网络带宽不够
2 服务器配置太低
3提供数据库服务软件版本低
查看服务运行时的运行参数(变量)
mysql-uroot-p123123
mysql> showvariableslike"%关键字%";
mysql> set变量名=值;
vim /etc/my.cnf
变量=值
:wq
并发连接数
max_connections
mysql> showglobalstatus like "%max_used_conn%";
Max_used_connections/max_connections=0.85* 100%
连接超时时间
mysql>showvariableslike "%timeout%";
connect_timeout=10
wait_timeout=28800
允许保存在缓存中被重用的线程数量
thread_cache_size=10
为所有线程缓存的打开的表的数量
table_open_cache =3
查询缓存参数设置?
mysql> showvariables like"query_cache%";
query_cache_type=0/1/2
1select * from t1; show global status like"qcache%";
4程序员编程程序有问题(访问数据是编写的sql命令复杂导致处
理速度慢)
mysql服务支持4种日志文件:
错误日志 binlog 查询日志 慢查询日志
默认开启
查询日志:客户端连接服务器后执行的所有的sql命令。
general-log
general-log-file=目录/名
默认存储位置和名称
cat/var/lib/mysql/主机名.log
慢查询日志 :客户端连接服务器后,记录超过指定时间(默认
10秒)显示查询结果的sql命令。
slow-query-log
slow-query-log-file=目录/名
long-query-time=3
默认存储位置和名称
mysql> select sleep(11);
cat /var/lib/mysql/主机名-slow.log
# mysqldumpslow localhost-slow.log > /tmp/sql.err
4程序员编程程序有问题(访问数据是编写的sql命令复杂导致处理速度慢)
启用慢查询日志 ,记录超过指定时间显示查询结果的sql命令
5网络结构有问题
页:
[1]