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

原文地址:https://www.cnblogs.com/zhehan/p/7230388.html