Posts tagged with MySql


2年前写过一篇《MySql 主从复制配置》,好久没接触MySql相关的东西了,最近刚好有个配置两台数据库做互备的需求,做一个双主互备主要为了一个是做一个数据备份,其次两台机子都可以读写操作,也可以mysql做负载均衡吧。配置过程相对还是蛮简单的,差不多就是主从配置再逆操作一下的感觉。 假设两台MySql的IP分别为: 假设两台MySql的IP分别为: MySql-Master 192.168.0.1 假设两台MySql的IP分别为: MySql-Master 192.168.0.1 MySql-Slave 192.168.0.2 1.配置MySql-Master ~# vi /etc/mysql/my.cn…

今天突然发现我的博客不能访问了,显示Wordpress的”数据库连接错误的”的报错信息,立马登陆到VPS上查看MySql的进程,进程存在,又top了一下,MySql并没有资源占用异常。好吧,重启MySql,Shutdown很久,实在没法忍了我就直接Kill了它的进程。 再重启Mysql时发现报错: 查看MySql的data目录权限,并chown mysql:mysql,重启无效 ps一下确实已经没有mysql进程在运行 查看localhost.err: key_buffer_size=16777216 read_buffer_size=262144 max_used_connections=0 max_threads=…

在MySql 5.1的版本以后支持定时任务 Event Scheduler,有点类似于Linux 的contab,可以创建 Event 来定时执行MySql的语句,具体的文档详见MySql的官方文档http://dev.mysql.com/doc/refman/5.1/en/events-privileges.html。 1.开启 全局变量eventscheduler用来设定是否服务器端运行执行计划任务,该变量有如下三种值: OFF:计划任务处于停止状态,event scheduler线程没有运行。是eventscheduler的默认值(执行一下任意一条命令关闭); SET GLOBAL event_scheduler…

记录一下配置MySql的主从的过程。 修改mast 服务器的mysql的配置 vim /etc/my.cnf [mysqld] log-bin=binary-log server-id = 1 log-bin启用mysql的二进制日志,它为mysql复制提供DDL和DML的语句流,这里可以是文件名前缀和目录,默认日志文件存放在数据目录中(mysql/var/)中,然后重新启动mysql守护进程 mysql> SHOW MASTER STATUS; +-------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_…

最近项目中遇到从论坛随机取出帖子放在首页,其实就是从数据库中随机取出一条记录,很明显,用 order by rand() 肯定不行,效率低的不行,我尝试了下在使用order by rand()的时候,表中有25万条记录,随机读取一条的执行时间大约是0.55秒左右。总结一下优化这条SQL语句的效率的几种方法。 第一种方法: 结合应用层来实现 只要SELECT MAX(id) FROM table;取出最大的id,然后用随机生成一个1~MAX(id)数,比如PHP mt_rand(1, MAX(id)…

语法上来说,建立全文索引和建立其他的索引差不多: CREATE FULLTEXT INDEX title ON column (title) ALTER TABLE table_name ADD FULLTEXT (column) 使用全文索引语法: MATCH(col1,col2,…) AGAINST(expr [search_modifier]) search_modifier为搜索修饰符, IN BOOLEAN MODE(布尔模式):使用具自己语法的搜索字符串包括搜索条件进行搜索。 IN NATURAL LANGUAGE MODE(…

GROUPCONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#functiongroup-concat。 GROUPCONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#functiongroup-concat。 语法:…

查看MySQL服务器配置信息 mysql> show variables; 查看MySQL服务器运行的各种状态值 mysql> show global status; 慢查询 mysql> show variables like ‘%slow%’; mysql> show global status like ‘%slow%’; 分析慢查询日志,找出有问题的SQL语句,慢查询时间不宜设置过长,否则意义不大,最好在5秒以内,如果你需要微秒级别的慢查询,可以考虑给MySQL打补丁:http://www.percona.…

备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。 mysqldump -–add-drop-table -uusername -ppassword databasename > backupfile.sql 直接将MySQL数据库压缩备份 mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz 备份MySQL数据库某个(些)表 mysqldump…

由于应用服务器和数据库服务器是独立的,发现链接到MySQL数据库的时候PHP处理数据时页面执行的很慢,如果应用和数据库在同一个服务器上时,则速度很正常,很快,这是为什么呢? 查了下资料发现,默认安装的 MYSQL开启了DNS的反向解析,MySQL 官方文档中关于MySQL如何使用DNS的说明: 当一个新的客户端连接到mysqld时,mysqld会产生一个新的线程来处理这个请求。这个线程首先会检查主机名是否在缓存中存在,如果不存在,它将尝试解析这个主机名。 如果操作系统支持线程安全的gethostbyaddrr() 和gethostbynamer() 调用,这个线程会使用它们执行主机名解析。 如果操作系统不支持线程安全的调用,这个线程就会锁定一个互斥体并换为调用gethostbyaddr() 和gethostbyname() 。在这种情况下,第一个线程解锁互斥体之前,其他的线程将不能解析在缓存中不存在的主机名。 你可以通过添加–skip-name-resolve参数启动mysqld来禁用 DNS 主机名查询。但是这将导致你在MySQL的授权表中只能使用IP数字。 如果你使用一个很慢的DNS和许多主机,你可以通过添加–skip-name-resolve禁用域名查询或通过增加 HOSTCACHESIZE…