Articles of mysql

在两个已经复制的MySQL集群之间同步特定的表

我有一个循环复制的MySQL集群,以及一个更新的Percona XtraDB实例集群,我们正在迁移到这个集群。 在移动过程中,我们正在旧群集上运行一些项目,并在新群集上运行其他项目。 我希望旧群集将更改复制到一个特定数据库中的大多数表中,直到新群集。 不幸的是,二进制日志包含每个数据库中每个表的更改,似乎没有办法编译不同的二进制日志集。 有没有一种合理的方法来从预先存在的循环复制中独立地复制某些表? 这些集群位于不同的提供商的数据中心,所以我不希望把整个binlog发送到networking上,而只需要一小部分。

InnoDB从ibdata恢复:“mysql后启动进程终止状态1”

我发现太迟了,我们的MySQL数据库的备份脚本工作不正常。 也就是说,当服务器上的磁盘已经开始出现故障时,我通过SSHlogin,并得到一个损坏的二进制垃圾的屏幕。 从那些不是空的.sql.gz文件的微不足道的备份中恢复,会使我们失去一个月的数据。 我真的很喜欢,如果我能避免这种情况。 我已经能够fsck磁盘,并提取了/var/lib/mysql目录的内容,每个数据库在子目录下有一个100MB的ibdata1 , ib_logfile*文件以及.frm和.opt文件。 我没有/etc/mysql/my.cnf ,那里的一切似乎都丢失了。 没有.ibd文件,可能是因为innodb_file_per_table被closures了。 我在我的开发机器上安装了MySQL 5.5安装(与失败相同的版本),并尝试恢复文件,按照这里的build议, 在这里 。 我把ibdata1和.frm和.opt文件放到/var/lib/mysql mysql:mysql ,在我重新创build表之后,将文件的权限和所有者设置为默认值(一些mysql:mysql ,一些mysql:root )使用mysql客户端的模式。 然后我用命令运行mysqld: /usr/sbin/mysqld –innodb_log_file_size=4128768 –innodb_force_recovery=6 它立即终止,没有输出。 一个dmesg | tail dmesg | tail显示了一大堆: [ 781.937089] init: mysql main process (1819) terminated with status 1 [ 781.937127] init: mysql respawning too fast, stopped /var/log/mysql.log和/var/log/mysql.err都是空的。 我已经在这个恢复过程的主题上尝试了一些变化。 我已经尝试将整个恢复的mysql数据目录复制到/var/lib ,我试图用.frm和.opt文件夹覆盖ibdata1和数据库子目录。 我已经尝试过,没有日志文件,并从1-6增加恢复值。 如果我恢复原来的mysql目录,mysqld启动就好了。 […]

用于防止SQL注入的dynamic列枚举

我有一个完全供内部使用的应用程序,但是我试图确保我的SQL基础覆盖了SQL注入。 除非有其他人有一些信息指向我,否则没有办法dynamic地指定列表中的列列表,而无需打开SQL注入的查询,因为准备好的语句bindparam不能用于指定列名称。 例如(不可能的,会抛出错误): SELECT :column_name FROM tablename WHERE other_column_name = :value 为了仍然dynamic允许调用列名,我直接必须传入一个variables(工作,但易受注入): SELECT $column_name FROM tablename WHERE other_column_name = :value 为了防止注入,我使用PHP的in_array函数针对表中所有列名的白名单检查$ column_name的值。 如果它在列表中,我继续查询,但如果不是,我会抛出一个exception。 由于在应用程序中有许多不同的地方需要这样的查询,所以我添加了一个函数给我的PDO包装器,以便使用information_schema数据库中的数据自动枚举这些列列表: public function schema_list($database_name = NULL, $table_name = NULL, $column_name = NULL) { $query = 'SELECT table_schema AS database_name, table_name, column_name FROM `information_schema`.`columns` WHERE table_schema = :database_name '; $parameters = array(); // […]

升级到debian wheezy后不能insall mysql-server

我升级debian到wheezy,并得到错误与mysql-server所以我删除它。 现在我不能重新安装它。 我得到: $ sudo apt-get install mysql-server … Unpacking mysql-server (from …/mysql-server_5.5.30+dfsg-1.1_all.deb) … Processing triggers for man-db … gdbm fatal: malloc error Setting up mysql-server-5.5 (5.5.30+dfsg-1.1) … [FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed! invoke-rc.d: initscript mysql, action "start" failed. […]

Ubuntu 12.04 VPS不能在nsswitch.conf中使用mysql进行引导

1和1 VPS(“dynamic云服务器”)在nsswitch.conf中启用mysql查找后不会再启动 – 任何build议都可以使用。 最小的设置重现问题: 安装Ubuntu 12.04 / LTS最servlets器映像 安装mysql-server,libnss-mysql-bg,nscd configuration/etc/libnss-mysql.cfg和/etc/libnss-mysql-root.cfg 设置适当的数据库表 在nsswitch.conf中通过mysqlconfigurationnss查找 passwd: compat mysql group: compat mysql shadow: compat mysql 现在,当我尝试重新启动服务器时,它只是挂起。 没有日志(可能由于/ var尚未安装),我看不到控制台输出(因为这是一个VPS)。 启动到恢复映像并从/etc/nsswitch.conf中删除“mysql”会使系统再次启动,所以这肯定与nsswitch / libnss-mysql-bg有关。 gentoo-users上有一个线程似乎描述了一个类似的问题,不幸的是没有描述真正的解决scheme,线程也比较老(从2006年开始),所以我不确定这是否适用于我。

在cron mysqldump不工作

我正在尝试每5分钟在cron上执行一个mysqldump ,但似乎它不工作。 我尝试执行mysqldump ,它工作正常。 mysqldump mysqldump -uroot -ppassword –single_transaction –opt dbname | gzip > /home/myhome/backup/dbname.`date +"%T"`.sql.gz cron */5 * * * * mysqldump -uroot -ppassword –single_transaction –opt dbname | gzip > /home/myhome/backup/dbname.`date +"%T"`.sql.gz LOG May 17 04:35:42 CentOS-63-64-minimal crontab[5605]: (root) LIST (root) May 17 04:40:01 CentOS-63-64-minimal CROND[5626]: (root) CMD (mysqldump -uroot -ppassword –single_transaction –opt dbname […]

在MySQL中dynamic分配来自表的Apache文档根

我目前使用mod_vhost_dbd从MySQL中拉出一个path,并插入为Apache的文档根。 这使我能够通过简单的数据库logging更新dynamic地将客户从生产转移到应用程序的testing版本。 这也大大减less了我们的虚拟主机configuration,因为一个虚拟主机块可以容纳我们所有的子域(例如,在testing时可以返回/ var / www / prod,例如可以返回/ var / www / test)。 如果数据库连接中断,则会出现问题。 如果没有find子域的有效条目,则会返回到虚拟主机configuration中定义的文档根目录。 使用当前的mod_vhost_dbd,如果服务器出于任何原因无法到达数据库服务器,则会引发500错误。 所以我的问题是 – 有没有人用另一种机制实现这种dynamic的文档根目录设置? 是否有修改,我们可以对当前的mod_vhost_dbd,使其失败的默认虚拟主机docroot不仅在一个缺失的logging,而且也损失数据库连接?

MySql / RedHat,高I / O等待…几个小时…然后消失

我有一个RH服务器作为VMWare实例logging全球定位系统修复24×7。 交易量在几个月内没有变化(事实上,我正在更积极地修剪交易表),在给定的时间只有60万到80万条logging。 没有adhoctypes的查询正在运行,所以我知道他们正在返回一些logging给客户端,我知道他们正在使用索引。 这个系统已经活了好几年了,在过去的几个星期里,每周几天的I / O突然增加到了+ 50%。 现在通常为空的“show processlist”显示了10到100个刚刚备份并标记为“locking”的插入请求。 就像神秘的问题一样,只要I / O等待<1%,问题就会自行恢复并运行几天! 交易组合是固定的,每天有相同数量的设备正在服务器上。 来自客户端服务器的自动查询重复定期请求。 从一个客户方面来看,一切都是一样的。 此外,这是所有这个服务器,服务器less数cgi-perl脚本作为对单个mysql数据库的Web服务。 我的想法是: Mysql表损坏。 我已经放弃了几次,重build了桌子,甚至把它改成了myisam,再改回到innodb。 这没有效果。 无论如何,我假设如果是腐败,它不会自我修复。 一个失败的硬件组件,我有一个从我身上移除的IT人员,我甚至不控制VMware实例,所以我不能真正debugging它。 再次,我看不到这一遍又一遍的自我修复。 其他虚拟机压缩我的磁盘性能。 这似乎是最有意义的,因为它来来去去。 除了sar -u和iostat报告高I / O等待以及“show processlist”显示成堆的未决locking插入的事实之外,我无法find任何东西。 机器似乎没有交换,内存不足,等等…但我不是Linuxpipe理专家,所以谁知道。 有人能给我一些想法来帮助确定问题吗? SAMPLE sar -b(这些数字是疯狂的): 12:00:01 AM tps rtps wtps bread/s bwrtn/s … 09:40:01 AM 75.12 1.70 73.42 13.76 1124.27 09:50:01 AM 67.78 1.09 66.69 […]

安装MySQL时出错:无法更新安全设置

尝试安装MySQL时(以pipe理员身份)获取此错误: 我已经select了一个帐户,即根帐户。 有谁能够帮助我?

MYSQL master master replication show master status显示空logging

环境:Windows 2008 R2,MySQL 5.051b 两台服务器: server1:192.168.2.8 server2:192.168.2.9 server1> my.ini [mysqld] server-id = 1 auto-increment-increment = 2 auto-increment-offset = 1 log-bin = mysql.bin bind-address = 0.0.0.0 server2> my.ini [mysqld] server-id = 2 auto-increment-increment = 2 auto-increment-offset = 2 log-bin = mysql.bin bind-address = 0.0.0.0 mySQL命令行客户端 mysql > show master status; 结果 Empty set (0.00 sec) 但是,我们在mySQL目录下找不到mysql.bin,我们发现二进制日志是被禁用的。 […]