mysql数据库的主从
一、mysql主从同步工作过程
/var/lib/mysql/
stu-relay-bin.000002
stu-relay-bin.index
relay-log.info
master.info
从 show slave status;
Slave_IO_Running: Yes
作用:从master数据库服务器的binlog日志里同步sql命令到本
机的中继binlog日志文件里
出错:
连接不上master 数据库服务器
ping iptables selinux grant
指定master数据库服务器的日志信息
binlog日志文件名 pos点错误
报错信息: Last_IO_Error: 错误信息提示
Slave_SQL_Running: Yes
执行本机中继binlog日志文件里的sql命令把数据写进本机的库
里。
出错: 执行本机中继binlog日志文件里的sql命令,用到的库表
记录不存在。
报错信息: Last_SQL_Error: 错误信息提示
修改方法:
stop slave;
change master 选项=值,选项=值;
start slave;
把从恢复为独立为独立的数据库服务器
rm -rf stu-relay-bin.* relay-log.info master.info
/etc/init.d/mysql restart
+++++++++++++++++++++++++++++++++++
二、mysql主从同步常用配置参数
master 数据库服务器的配置参数
vim /etc/my.cnf
[mysqld]
参数=值
binlog-do-db=数据库名,数据库名
binlog-ignore-db=数据库名,数据库名
:wq
/etc/init.d/mysql restart
slave 数据库服务器的配置参数
vim /etc/my.cnf
[mysqld]
参数=值
replicate-do-db=数据库名
replicate-ignore-db=数据库名
relay-log=中继日志文件名
log-slave-updates 级联复制
:wq
/etc/init.d/mysql restart
+++++++++++++++++++++++++++++++++++
三、配置mysql代理服务实现数据读写分离
数据库服务器 103 99 配置
grant all on *.* to jim@"%" indentified by "123";
103 99 create database db1;
create table db1.a(id int);
103 insert db1.a values(103);
99 insert db1.a values(99);
117配置
ping 172.40.50.103
ping 172.40.50.99
mysql -h172.40.50.103 -ujim -p123
mysql -h172.40.50.99 -ujim -p123
tar -zxvf mysql-proxy-tar.gz
mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/
/usr/local/mysqlproxy
chmod +x /usr/local/mysqlproxy/shear/doc/mysql-
proxy/rw-splitting.lua
rpm -q lua || yum -y install
netstat -utnalp | grep :3306
/usr/local/mysqlproxy/bin/mysql-proxy -P
172.40.50.117:3306 -r 172.40.50.139:3306 -b
172.40.50.136:3306 -s
/usr/local/mysqlproxy/share/doc/mysql-proxy/rw-
splitting.lua &
netstat -utnalp | grep :3306
测试
ping 172.40.50.117
which mysql || yum -y install mysql
mysql -h172.40.50.117 -ujim -p123
mysql>
+++++++++++++++++++++++++++++++++
四、mysql性能调优
当数据库服务器处理用户的请求慢的时候,可能是由于什么原因
造成的?
1 硬件配置低 (cpu 内存 硬盘)
2 网络带宽
3 提供数据库服务的软件版本低 my.cnf说明文档
服务运行参数设置不合理
mysql数据库服务器处理查询请求的过程?
show variables like ""
set global 变量名=值
mysqld
select * from t1 order by age;
select * from t1;
thread-cache-size=10
table-open-cache=13
select * from t1; ----> 查询缓存里找
表里 /var/lib/mysql/db1/t1.frm t1.ibd
pc1 select name from t1 where name=jim;
查询缓存里 name=jim
pc2 select name from t1 where name=jim;
pc3 update t1 set name=lucy where name=jim;
4 程序员对数据库里数据操作的sql命令写的有问题。
4.1 获取程序员编写的超过指定时间显示查询结果的sql命令
开启mysql数据库服务的慢查询日志
vim /etc/my.cnf
[mysqld]
slow-query-log
slow-query-log-file=名
long-query-time=5
log-queries-not-using-indexes
:wq
主机-slow.log 默认命名格式
mysqldumpslow stu-slow.log 统计慢查询日志的记录信息
查询日志: 记录客户端连接数据库服务器后 ,执行的所有SQL
操作。
vim /etc/my.cnf
[mysqld]
general-log
general-log-file=名
:wq
主机.log 默认命名格式
cat 主机.log