Воскресенье
17-11-2024
18:23
Главная страница
Каталог статей
Информист Приветствую Вас Гость | RSS
Регистрация
Вход
Меню сайта

Категории каталога
MySQL [8]
PostgreSQL [2]

Наш опрос
Насколько вам понравился этот сайт
Всего ответов: 545

Копилка
Если вам понравился наш сайт или вы нашли полезную информацию, то у вас есть возможность отблагодарить администрацию.

Начало » Статьи » СУБД » MySQL

Настройка MySQL

Всем студентам, у которых возникли трудности с настройкой репликации на линухе, в частности 5-го курса нашего политеха, посвящается.

Инструкция по настройке репликации на серверах mysql на линухе с нуля (с установки мускула) разделена на 4 части:

1. Подготовка Mysql к работе
2. Создание БД
3. Настройка репликации
4. Ошибки

В этой же статье будет описана последовательность действий для настройки репликации с минимумом слов, в основном команды для настройки, если что то не понятно - читайте указанные выше статьи.


После установки мускула, необходимо его настроить. Создадим пользователя root и зададим ему пароль, в примере показано также создание пользователя admin:

shell> mysql -u root mysql
mysql>UPDATE user SET Password=PASSWORD('new_password') WHERE user='root';
mysql>FLUSH PRIVILEGES;
mysql>exit
shell>mysql -u root
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
shell>mysql -u root -p
Enter password: *******
mysql>GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'some_password' WITH GRANT OPTION;

Источник


Пример создания базы данных:

mysql> CREATE DATABASE petdb;
mysql> USE petdb
(mysql -h host -u user -p petdb)
mysql> SHOW TABLES;
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
mysql> DESCRIBE pet;
mysql> LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet;
mysql> INSERT INTO pet
-> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);)


Источник

Конфиг мастера:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1

log-bin
# binlog-do-db= можно указать БД которая будет реплицироваться
binlog-ignore-db=mysql #для указания БД которая будет игнорироваться при репликации
binlog-ignore-db=test

server-id=1

[mysql.server]
user=mysql
basedir=/var/lib


[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


В ubuntu 9.04 конфиг файл по умолчанию находится и читается при старте демона в /etc/mysql/my.cnf. В нем по умолчанию раскоментирована строчка в разделе:
[mysqld]
...
bind-address = 127.0.0.1
...
Это означает что сервер будет слушать порт 3306 только на локалхосте. Чтоб имели доступ к бд остальные машины в сети нужно эту строчку закоментировать.

Конфиг слейва:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1

server-id=2

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Создаем на мастере учетную запись под которой будет коннектиться слейв (master_user=replication; master_password=slave)

mysql> grant replication slave on *.* to 'replication'@slave.IP identified by 'slave';
На мастере:

mysql>SHOW master STATUS;

-запоминаем значение параметров File и Position

На слейве:

mysql>stop slave;
mysql>reset slave;
mysql>\q
/bin/bash>service mysqld restart (не факт, что нормально перезапуститься, возможно потребуется убить и заново запустить)
/bin/bash>mysql -uroot -p
mysql>stop slave;
mysql>CHANGE master TO
----->master_host = 'master_host',
----->master_user = 'user'.
----->master_password = 'password',
----->master_log_file = 'log_file',
----->master_log_pos = log_pos;
mysql>start slave;
mysql>show slave status\G;


-log_file - имя файла из таблички, полученной на местере = File; параметр - в одинарных кавычках
-log_pos - положение в файле, полученное на мастере = Position; параметр - числом, без кавычек

Если при выполнении на мастере команды show master status выдает empty set, то нужно окончательно убить в системе мукул:

#/etc/init.d/mysqld stop
#killall -9 mysqld
#pkill mysqld
#service mysqld status
#service mysqld stop
#service mysqld start
#service mysqld restart
#mysqladmin -uroot -p shutdown


Ошибки встречавшиеся при настройке репликации в ubuntu 9.04.

1) При старте сервера выдает:
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.

То нужноe убить демон #killall -9 mysqld и зайти в каталог /var/lib/mysql/ и выполнить такие команды:
#mv ibdata1 ibdata1.bak
#cp -a ibdata1.bak ibdata1


2) При старте пишет что по протоколу TCP/IP порт 3306 уже занят:
InnoDB: Error in opening ./ib_logfile0
091019 20:51:18 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
091019 20:51:18 [ERROR] Do you already have another mysqld server running on port: 3306 ?
091019 20:51:18 [ERROR] Aborting
091019 20:51:18 [Note] mysqld: Shutdown complete

То нужно убить демон #killall -9 mysqld и потом заново его рестартануть.

Опции my.cnf при репликации
Хорошая статья
Категория: MySQL | Добавил: Judge (10-10-2009)
Просмотров: 2963 | Рейтинг: 5.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Поиск по каталогу
Яндекс


Поиск по Информисту

Наша кнопка


Друзья сайта

Статистика


Copyright MyCorp © 2006Сайт создан в системе uCoz