配置主从同步的步骤
环境准备
从一定要有主库比自己多个的数据
systemctl stop firewalld
setenforce 0
物理连接能通
配置主数据库服务器
1 用户授权
grant replication slave on *.* to plj@"%" identified by "123456";
2 修改配置文件
vim /etc/my.cnf
server_id=12
log_bin=master12
log_format="mixed"
:wq
3 重启数据服务
systemctl restart mysqld
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 重启数据服务
systemctl restart mysqld
4 管理员登录把自己指定为从数据库服务器
mysql -uroot -p654321
mysql> show slave status\G;
mysql> change master to master_host="192.168.4.12",master_user="plj",master_password="123456",master_log_file="master12.000001",master_log_pos=154;
5 启动slave 进程
mysql> start slave;
6 查看slave 进程状态信息
mysql> show slave 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>stop slave;
mysql>change master to 选项=值,选项=值;
mysql>start slave;
cd /var/lib/mysql/
master.info 连接主数据库服务器的信息
relay-log.info 中继日志文件
localhost-relay-bin.xxxxxx 中继日志文件
localhost-relay-bin.index 中继日志索引文件
把一台数据库服务器恢复为独立的数据库服务器。
#cd /var/lib/mysql
#rm -rf master.info relay-log.info localhost-relay-bin.*
#systemctl restart mysqld
让从数据库服务器临时不同步数据(想同步再启动就可以了)
mysql>stop slave ;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
day06
mysql主从同步结构模式
一主一从
一主多从
主从从
主主结构(互为主从)
+++++++++++++++++++++++++++++
mysql主从同步配置参数
主数据库服务器使用的配置参数
/etc/my.cnf
[mysqld]
binlog_do_db=数据库名,数据库名 #只允许同步的库
binlog_ignore_db=数据库名,数据库名 #只不允许同步的库
:wq
#systemctl restart mysqld
从数据库服务器使用的配置参数
/etc/my.cnf
[mysqld]
log_slave_updates # 允许级联复制
relay_log=名 #中继日志文件名
replicate_do_db=数据库名,数据库名 #只同步的库
replicate_ignore_db=数据库名,数据库名 #只不同步的库
:wq
#systemctl restart 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
[root@localhost ~]# cat /etc/maxscale.cnf
[maxscale]
threads=1
[server1]
type=server
address=192.168.4.12
port=3306
protocol=MySQLBackend
[server2]
type=server
address=192.168.4.11
port=3306
protocol=MySQLBackend
[MySQL Monitor]
type=monitor
module=mysqlmon
servers=server1,server2
user=scalemon
passwd=111111
monitor_interval=10000
[Read-Write Service]
type=service
router=readwritesplit
servers=server1,server2
user=maxscale
passwd=111111
max_slave_connections=100%
[MaxAdmin Service]
type=service
router=cli
[Read-Write Listener]
type=listener
service=Read-Write Service
protocol=MySQLClient
port=4006
[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
socket=default
port=6606
[root@localhost ~]#
配置文件说明
0 设置服务运行启动的线程数量
[maxscale]
1 数据库服务器成员 [server1] [server2]
2 监控数据库服务器成员列表 [MySQL Monitor]
user=scalemon //用户名
passwd=111111 //密码
3 指定在那些数据库服务器之间做读写分离
[Read-Write Service]
user=maxscale //用户名
passwd=111111 //密码
4 定义管理服务
[MaxAdmin Service]
5 读写分离服务监控的端口号
[Read-Write Listener]
6 指定管理服务监听的端口号
[MaxAdmin Listener]
2.2根据配置文件的设置添加授权用户(12 11)
scalemon用户
grant replication slave, replication client on *.* to scalemon@"%" identified by “111111”; //创建监控用户
maxscale用户
grant select on mysql.* to maxscale@'%' identified by "111111”; //创建路由用户
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
[root@localhost ~]#
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在主从数据库服务器上客户端访问数据时使用的连接用户
mysql>grant all on *.* to student@"%" identified by
"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> show variables like "%关键字%";
mysql> set [GLOBAL] 变量名=值;
vim /etc/my.cnf
[mysqld]
变量=值
:wq
并发连接数
max_connections
mysql> show global status like "%max_used_conn%";
Max_used_connections/max_connections=0.85 * 100%
连接超时时间
mysql>show variables like "%timeout%";
connect_timeout=10
wait_timeout=28800
允许保存在缓存中被重用的线程数量
thread_cache_size=10
为所有线程缓存的打开的表的数量
table_open_cache =3
查询缓存参数设置?
mysql> show variables like "query_cache%";
query_cache_type=0/1/2
1 select * from t1; <1m
2 select in_sql_cache * from t1;
query_cache_wlock_invalidate off
对myisam 存储引擎有效。
pc1 select name from t1 where name="jim";
name=jim
pc2 select name from t1 where name="jim";
pc3 update t1 set name="tom" where name="jim";
显示查询缓存统计信息
mysql>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网络结构有问题