вторник, 24 марта 2015 г.

Перенос пользователей Mysql

на сервере с которого нужно перенести пользователей создаем хранимую процедуру:
CREATE DEFINER=`alexk`@`%` PROCEDURE `showGrants`()
  LANGUAGE SQL
  NOT DETERMINISTIC
  CONTAINS SQL
  SQL SECURITY DEFINER
  COMMENT ''
BEGIN
  DECLARE v VARCHAR(64) CHARACTER SET utf8;
  DECLARE c CURSOR FOR
  SELECT DISTINCT CONCAT(
  'SHOW GRANTS FOR ''', user, '''@''', host, ''';'
  ) AS query FROM mysql.user;
  DECLARE EXIT HANDLER FOR NOT FOUND BEGIN END;
  OPEN c;
  WHILE TRUE DO
  FETCH c INTO v;
  SET @v = v;
  PREPARE stmt FROM @v;
  EXECUTE stmt;
  END WHILE;
  CLOSE c;
END

после чего выполняем её в консоли и записываем в файл:
mysql -h <host> -u <user> -b <db> -p -e "call showGrants" > grants

И подготавливаем файл для выполнения в mysql:
cat grants | awk '{if ($1 != "Grants") print $0,";"}' > grants

Заливаем в базу:
cat grants | mysql -h <host> -u <user> -p

Добавление Mysql-slave сервера в репликацию

На мастер сервере

В конфиге (/etc/my.cnf) прописываем, в секции [mysqld]:
log-bin
binlog_format=mixed
server-id = 1

Перезагружаем mysql:
service mysqld restart

Дальше подключаемся к mysql:
mysql -h <master-server> -b <database> -u <user> -p

Заводим пользователя под которым будет подключаться slave:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'<slave-server>' IDENTIFIED BY 'password';

Запрещаем запись в таблицы:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;

Смотрим текущий файл и позицию binlog`а:
SHOW MASTER STATUS \G
Запоминаем их.

Заходим в другую консоль и делаем дамп базы:
mysqldump --databases <database> --opt  > <dump_filename>

Возвращаемся в предыдущую консоль и включаем обратно запись в базу:
SET GLOBAL read_only = OFF; 
Можно отключаться.

Копируем дамп на вторичный сервер:
scp <dump_filename> <slave-server>:<dump_filename>

На slave-сервере

В конфиге (/etc/my.cnf) прописываем, в секции [mysqld]:
log-bin 
server-id       = 2 
master-host     = <master-server> 
master-user     = repl 
master-password = password

Перезагружаем mysql:
service mysqld restart

Подключаемся к mysql:
mysql -h <slave-server> -b <database> -u <user> -p

Заводим пользователя для репликации:
GRANT REPLICATION CLIENT ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';

В другой консоли восстанавливаем базу из дампа:
cat <dump_filename> | mysql -h <slave-server> -u <user> -p

Возвращаемся в консоль с подключенным mysql, и останавливаем slave:
SLAVE STOP;

Прописываем текущую позицию binlog`а подсмотренную на мастер-сервере:
CHANGE MASTER TO MASTER_HOST = "<master-server>", MASTER_USER = "repl", MASTER_PASSWORD = "password", MASTER_LOG_FILE = "<binlog_filename>", MASTER_LOG_POS = <binlog_position>;

Стартуем slave: SLAVE START;

И проверяем заработала ли репликация: SHOW SLAVE STATUS \G

Всё.

P.S. Копировать пользователей нужно отдельно.

понедельник, 23 марта 2015 г.

Windows 7 вернуть Quick Launch

"Создать панель инструментов..."
Путь:
%APPDATA%\Microsoft\Internet Explorer\Quick Launch

понедельник, 2 марта 2015 г.

Red Hat/CentOS 7 вернуться к iptables

Разбираться в firewald желания нет никакого, учитывая что это всего лишь надстройка над iptables.
Останавливаем и отключаем firewald
service firewalld stop
systemctl disable firewalld


Устанавливаем скрипты для работы через service
yum install iptables-services

Активируем
systemctl enable iptables

И запускаем
service iptables start