Установка и добавление данных
Решил написать несколько статей о установке, настройке и роботе с mysql базой данных. В качестве mysql-сервера будем использовать Percona Server 5.6 под управлением операционной системой Ubuntu 12.04. Данная серия статей будет полезной для людей, которые впервые сталкиваются с базами данных(БД) mysql, и хотят немного изучить установку, базовые команды(запросы), научиться делать backup и restore данных, настройку и тестирование репликации БД percona mysql.В этой части пойдет речь о базовой установке и добавлении тестовой БД, репликация которой будет настроена в следующей статье Поскольку статьи будут взаимосвязаны, наведем схему репликации (рис. 1) и базовую конфигурацию серверов.
Роль хоста | Имя хоста (hostname) | IP хоста |
---|---|---|
Master server 1 | m-serv1 | 192.168.1.201 |
Master server 2 | m-serv2 | 192.168.1.202 |
Slave server 1 | m-slave1 | 192.168.1.203 |
Slave server 2 | m-slave2 | 192.168.1.204 |
1 Установка
Для начала нам нужно установить Percona Server 5.6.
Mysql нужно установить на всех серверах, в нашем случаи на 4-х (2 мастера, 2 слейва). Начинаем установку.
root@m-serv1:~# apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.igWqa1jBp0 --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
gpg: requesting key CD2EFD2A from hkp server keys.gnupg.net
gpg: key CD2EFD2A: public key "Percona MySQL Development Team <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
root@m-serv1:~# cat >> /etc/apt/sources.list.d/percona-mysql.list
deb http://repo.percona.com/apt precise main
deb-src http://repo.percona.com/apt precise main
root@m-serv1:~# apt-get update
root@m-serv1:~# apt-get install percona-server-server
При установке, у Вас спросят пароль root-a, который будет использоваться для подключения к mysql серверу – не забудьте его. Далее можно запуститьmysql_secure_installationдля обновления пароля, удаления ненужных БД и пользователей.
root@m-serv1:~# mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] Y
... Success!
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] Y
... Success!
Все эти действия нужно проделать наm-serv2,m-slave1иm-slave2. Теперь можно создать тестовую БД.
2 Добавление данных
2.1 Создание тестовой БД
Можно создать БД (testdb) на одном сервере, сделать ее дамп и развернуть на всех остальных. Что мы и сделаем.
Подключаемся наm-serv1к mysql консоли и создаем тестовую БД.
root@m-serv1:~# mysql -u root -p
mysql> CREATE DATABASE testdb;
Далее добавим таблицу в новую БД.
mysql> CREATE TABLE IF NOT EXISTS testdb.users (id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20));
Теперь добавим одну строку в таблицу users.
mysql> INSERT INTO users(name) VALUES ("Alex");
Далее проверим что у нас получилось.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| testdb |
+--------------------+
5 rows in set (0.02 sec)
mysql> use testdb; show tables;
Database changed
+------------------+
| Tables_in_testdb |
+------------------+
| users |
+------------------+
1 row in set (0.00 sec)
mysql> use testdb; select * from users;
Database changed
+----+------+
| id | name |
+----+------+
| 1 | Alex |
+----+------+
1 row in set (0.00 sec)
mysql> use testdb; describe users;
Database changed
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.03 sec)
Как видим, мы успешно создали БДtestdbи в ней создали таблицуusers, в которую добавили новую запись.
2.2 Дамп и деплой БД на всех серверах
Снимаем дамп нашей новой БД и копируем его на второй мастерm-serv2.
root@m-serv1:~# mysqldump -u root -p testdb > testdb.sql
root@m-serv1:~# rsync testdb.sql alex@m-serv2:/home/alex/
Теперь логинимся на второй сервер и разворачиваем дамп.
root@m-serv2:~# mysql -u root -p -e 'create database testdb;'
root@m-serv2:~# mysql -uroot -p testdb < testdb.sql
root@m-serv2:~# mysql -u root -p -e 'use testdb; select * from users;'
+----+------+
| id | name |
+----+------+
| 1 | Alex |
+----+------+
Те же действия нужно проделать со слейвами(m-slave1иm-slave2), т.е. синкануть БД на оба слейва и развернуть таким же макаром.
2.3 Создание юзера для репликации
Теперь нужно создать юзера, который будет заниматься репликацией. Для этого переходим в mysql консоль и создаем юзераreplicaс правами “replication slave”.
mysql> CREATE USER 'replica'@'%' IDENTIFIED BY '%repl2015';
Query OK, 0 rows affected (0.22 sec)
mysql> GRANT replication slave ON *.* TO 'replica'@'%';
Query OK, 0 rows affected (0.10 sec)
Как вы поняли, эти действия нужно проделать на всех 4-х серверах.В следующей статье займемся непосредственно настройкой репликации.