SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA = ‘powerdns’; MYISAM или INNODB
КОНВЕРТАЦИЯ MYISAM > INNODB
for n in `mysql DBNAME -pPASSDB -B -N -e «show tables;»`;do mysql DB_NAME -pPASSDB -B -N -e «ALTER TABLE $n ENGINE=innodb;»;done ????
или дамп ресторе
CREATE USER ‘linuxcenter-user’@’localhost’ IDENTIFIED BY ‘linuxcenter-pass’;
flush privileges;
#/etc/init.d/mysql stop
Теперь нам нужно запустить MySQL без пароля
# mysqld_safe —skip-grant-tables &
Подключитесь к MySQL серверу используя mysql клиент
# mysql -u root
Вы увидите консоль mysql
mysql>
Устанавливаем новый пароль пользвателя root:
mysql> use mysql;
mysql> update user set password=PASSWORD(”newrootpassword”) where user=’root’;
mysql> flush privileges;
mysql> quit
##### ========================================================
дамп
всех баз
mysqldump —user=X —password=X -A > DUMPFILE.SQL
дамп одной или нескольких баз
mysqldump —user=X —password=X —databases DB_NAME1 DB_NAME2 DB_NAME3 > DUMPFILE.SQL
дамп таблиц
mysqldump —user=X —password=X —databases DB_NAME —tables TABLE_NAME > DUMPFILE.SQL
Чтобы восстановить БД надо:
Заходим в шелл (Mysql -u username -p) или просто Mysql, если локально.
USE database_name;
SOURCE d:/backup/…/dump_name.sql
==================================================================
замена значений в таблице
UPDATE таблица_имя SET поле_имя = REPLACE(поле_имя, ‘что заменить’, ‘чем заменить’);
##### ==========================================================
MySQL introduced encoding for table names that have non-ASCII characters. After a live upgrade from MySQL 5.0 to 5.1 or higher, the server recognizes names that have non-ASCII characters and adds a #mysql50# prefix to them.
This happens because the data directory structure has changed on MySQL 5.1 and you need to upgrade the directory structure for the affected database(s).
This is done by running the mysql_upgrade script which will examine all tables in all databases for incompatibilities with the current version of MySQL Server. It also upgrades the system tables so that you can take advantage of new privileges or capabilities that might have been added.
The mysql_upgrade script executes the following commands:
mysqlcheck —check-upgrade —all-databases —auto-repair
mysql_fix_privilege_tables
mysqlcheck —all-databases —check-upgrade —fix-db-names —fix-table-names
However, prior to MySQL 5.1.31, mysql_upgrade does not run the third command, which is necessary to re-encode database or table names that contain non-alphanumeric characters and remove the #mysql50# prefix. If you have such database or table names, execute the third command manually after executing mysql_upgrade or run the following query:
mysql > ALTER DATABASE `#mysql50#database` UPGRADE DATA DIRECTORY NAME;
Полезная команда, которая поможет вам проверить и восстановить все таблицы в ваших базах данных mysql:
mysqlcheck -uroot -ppassword —auto-repair —check —optimize —all-databases
=================================
Incorrect key file for table Если repair не помогает
Stage 3: Difficult repair
You should reach this stage only if the first 16KB block in the index file is destroyed or contains incorrect information, or if the index file is missing. In this case, it’s necessary to create a new index file. Do so as follows:
1. Move the data file to some safe place.
2. Use the table description file to create new (empty) data and index files:
shell> mysql db_name
mysql> SET AUTOCOMMIT=1;
mysql> TRUNCATE TABLE tbl_name;
mysql> quit
If your version of MySQL doesn’t have TRUNCATE TABLE, use DELETE FROM tbl_name instead.
3. Copy the old data file back onto the newly created data file. (Don’t just move the old file back onto the new file; you want to retain a copy in case something goes wrong.)
потом так
mysql>
CHECK TABLE table_name;
REPAIR TABLE table_name;
—————————————————
1. Останавливаем mysql.
service mysqld stop
2. Запускаем mysql следующей командой:
/usr/bin/mysqld_safe —skip-grant-tables —user=root &
3. Запускаем клиента mysql
mysql -u root
4. Выполняем sql запрос
UPDATE mysql.user SET Password=PASSWORD(‘newpwd’) WHERE User=’root’;
где newpwd — новый пароль.
5. Применяем изменения
FLUSH PRIVILEGES;
6. Выходим из mysql клиента выполнив в нем команду exit
7. Перегружаем mysql сервер.
service mysqld restart
Встроенный механизм кэширования запросов в MySQL.
mysql> show variables like ‘query_cache%’;
+——————————+———+
| Variable_name | Value |
+——————————+———+
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+——————————+———+
Чтобы включить кэш запросов и выделить под него 32 мегабайта памяти можно выполнить запрос set @@global.query_cache_size=32*1024*1024; с правами суперпользователя, а чтобы сделать эту настройку постоянной, следует добавить в my.cnf в подраздел [mysqld] строчку query_cache_size=32M. Второй полезный параметр — query_cache_limit задает максимальный объем результата выполнения запроса, который может быть помещен в кэш
Тюнинг под большую нагрузку
max_connections = 400
wait_timeout = 30
key_buffer_size = 2G
query_cache_size = 64M
tmp_table_size = 128M
max_heap_table_size = 64M
thread_cache_size = 24M