восстановление из бэкапов

phpBB но не только...

Модераторы: Olej, adminn

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

восстановление из бэкапов

Непрочитанное сообщение Olej » 14 янв 2020, 22:28

Имеется в виду восстановление из бэкапов (форума phpBB) подготовленных в теме рядом: подготовка регулярных бэкапов форума:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ ls -l backup-13.01.2020_16-23.*
-rw-r--r-- 1 olej olej   42456040 янв 13 16:23 backup-13.01.2020_16-23.sql
-rw-r--r-- 1 olej olej 1088499388 янв 13 16:31 backup-13.01.2020_16-23.tgz
Восстанавливаю, как всегда для начала, локальный форум из бэкапов сетевого, боевого, вот этого на котором читаю-пишу...
Т.е. это фактически репликация, время от времени, локальной копии под сетевую.

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 14 янв 2020, 22:37

Olej писал(а):
14 янв 2020, 22:28
Восстанавливаю, как всегда для начала, локальный форум из бэкапов сетевого,

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo systemctl stop apache2
[sudo] пароль для olej:


olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2020-01-14 19:21:54 EET; 5s ago
     Docs: https://httpd.apache.org/docs/2.4/
  Process: 945 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
  Process: 15154 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
 Main PID: 1162 (code=exited, status=0/SUCCESS)

янв 14 15:36:55 ACER systemd[1]: Starting The Apache HTTP Server...
янв 14 15:36:55 ACER systemd[1]: Started The Apache HTTP Server.
янв 14 19:21:54 ACER systemd[1]: Stopping The Apache HTTP Server...
янв 14 19:21:54 ACER systemd[1]: apache2.service: Succeeded.
янв 14 19:21:54 ACER systemd[1]: Stopped The Apache HTTP Server.
1. Восстанавливаю дерево файлов из .tgz. Цель: обновить вот этот каталог:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ du -hs /var/www/html/
1,2G    /var/www/html/
Временная копия:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ time tar -xzf backup-13.01.2020_16-23.tgz

real    0m10,717s
user    0m8,911s
sys     0m1,890s

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ ls -l linux-ru.ru/ | head
итого 1144
drwxr-xr-x  2 olej olej   4096 дек 22 00:07 acp
drwxr-xr-x  5 olej olej   4096 дек 22 00:08 adm
-rw-r--r--  1 olej olej    952 дек 22 00:13 app.php
drwxr-xr-x  7 olej olej   4096 дек 22 00:08 assets
drwxr-xr-x  2 olej olej   4096 дек 22 00:11 bin
drwxr-xr-x  3 olej olej   4096 дек 22 02:51 cache
-rw-r--r--  1 olej olej    926 дек 22 00:13 CHANGELOG.md
-rw-r--r--  1 olej olej   5315 дек 22 00:13 common.php
-rw-r--r--  1 olej olej   1959 дек 22 00:13 composer.json
Меня user:group здесь не может устраивать:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo chown www-data:www-data -R linux-ru.ru/

olej@ACER:~/2020_WORK/rus.linux.net.hist$ ls -l linux-ru.ru/ | head
итого 1144
drwxr-xr-x  2 www-data www-data   4096 дек 22 00:07 acp
drwxr-xr-x  5 www-data www-data   4096 дек 22 00:08 adm
-rw-r--r--  1 www-data www-data    952 дек 22 00:13 app.php
drwxr-xr-x  7 www-data www-data   4096 дек 22 00:08 assets
drwxr-xr-x  2 www-data www-data   4096 дек 22 00:11 bin
drwxr-xr-x  3 www-data www-data   4096 дек 22 02:51 cache
-rw-r--r--  1 www-data www-data    926 дек 22 00:13 CHANGELOG.md
-rw-r--r--  1 www-data www-data   5315 дек 22 00:13 common.php
-rw-r--r--  1 www-data www-data   1959 дек 22 00:13 composer.json
Отправляю на место назначения:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo cp -R linux-ru.ru/* /var/www/html
С 1-м пунктом управились... :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 14 янв 2020, 22:41

Olej писал(а):
14 янв 2020, 22:37
С 1-м пунктом управились...
2-й пункт самый противный - перегнать содержимое базы данных MySQL:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo time mysql -u root -p forum < backup-13.01.2020_16-23.sql
Enter password:
0.40user 0.02system 0:25.16elapsed 1%CPU (0avgtext+0avgdata 10768maxresident)k
82928inputs+0outputs (0major+1261minor)pagefaults 0swaps
Интересующая нас БД - с именем forum:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo mysql -u root --password=xxxxxx
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 124
Server version: 10.3.18-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant all privileges on forum to 'root'@'localhost';
ERROR 1046 (3D000): No database selected
MariaDB [(none)]> use forum
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [forum]> grant all privileges on forum to 'root'@'localhost';
Query OK, 0 rows affected (0.001 sec)

MariaDB [forum]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| forum              |
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [forum]> exit
Bye

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 14 янв 2020, 22:43

Olej писал(а):
14 янв 2020, 22:41
2-й пункт самый противный - перегнать содержимое базы данных MySQL:
Но это не всё!
3-й пункт - согласовать имя пользователя + пароль доступа к базе данных + обеспечить права доступа к БД для этого форума...
В старом форуме было - config.php (это ещё со старого хостига):

Код: Выделить всё

olej@ACER:/var/www/html$ pwd
/var/www/html

olej@ACER:/var/www/html$ cat config.php
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!

$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'forum';
$dbuser = 'i1531004_solar4_linux-ru';
$dbpasswd = 'en;x@Uriie!k';
$table_prefix = 'rlf1_';
$acm_type = 'file';
$load_extensions = '';


@define('PHPBB_INSTALLED', true);
@define('DEBUG', true);
@define('DEBUG_EXTRA', true);
?>
А в новом - бэкапленном - уже:

Код: Выделить всё

olej@277938:~$ cat /var/www/linux-ru.ru/config.php
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!

$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'forum';
$dbuser = 'root';
$dbpasswd = 'yyyyyyyy';
$table_prefix = 'rlf1_';
$acm_type = 'file';
$load_extensions = '';


@define('PHPBB_INSTALLED', true);
@define('DEBUG', true);
@define('DEBUG_EXTRA', true);
?>
И это нужно согласовать...

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 14 янв 2020, 22:49

Olej писал(а):
14 янв 2020, 22:43
И это нужно согласовать...
В результате, после всех согласований, закончилось при доступе к http://127.0.0.1/index.php так:

Код: Выделить всё

General Error
SQL ERROR [ mysqli ]

Access denied for user 'root'@'localhost' [1698]

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 997
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 112
CALL: phpbb\db\driver\driver->sql_error()

FILE: [ROOT]/phpbb/di/container_builder.php
LINE: 555
CALL: phpbb\db\driver\mysqli->sql_connect()

FILE: [ROOT]/phpbb/di/container_builder.php
LINE: 212
CALL: phpbb\di\container_builder->inject_dbal_driver()

FILE: [ROOT]/phpbb/di/container_builder.php
LINE: 419
CALL: phpbb\di\container_builder->get_container()

FILE: [ROOT]/phpbb/di/container_builder.php
LINE: 165
CALL: phpbb\di\container_builder->load_extensions()

FILE: [ROOT]/common.php
LINE: 115
CALL: phpbb\di\container_builder->get_container()

FILE: [ROOT]/index.php
LINE: 23
CALL: include('[ROOT]/common.php')
А в /var/log/mysql/error.log :

Код: Выделить всё

2020-01-14 19:48:15 125 [Warning] Access denied for user 'root'@'localhost'
Это повторялось достаточно много раз, при разных изменениях ... не буду описывать...
Предполагаю, что это из-за того, что в результате многих перенесений разными людьми:
- пользователи root имеют в системе (sudo) и в MySQL разные пароли, и возникает какая-то путаница с правами...
- не нужно вообще работать с пользователем с именем root по доступу к БД.

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 14 янв 2020, 22:54

Olej писал(а):
14 янв 2020, 22:49
- не нужно вообще работать с пользователем с именем root по доступу к БД.
Создаю совсем нового одинарного пользователя БД и даю ему права:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo mysql -u root --password=mmMAcE9Z
[sudo] пароль для olej:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 135
Server version: 10.3.18-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> Create user 'olej'@'localhost' identified by 'zzzzzz';
Query OK, 0 rows affected (0.001 sec)

MariaDB [mysql]> grant all privileges on forum.* to 'olej'@'localhost' with grant option;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> Flush privileges;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]>  Show Grants for olej@localhost;
+-------------------------------------------------------------------------------------------------------------+
| Grants for olej@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'olej'@'localhost' IDENTIFIED BY PASSWORD '*B9009570E12F798A7CB2A9345878226AABF5AED9' |
| GRANT ALL PRIVILEGES ON `forum`.* TO 'olej'@'localhost' WITH GRANT OPTION                                   |
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

MariaDB [(none)]> exit
Bye
Проверяю (это контроль!) что этот пользователь работает с БД без sudo:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ mysql -u olej --password=zzzzzz
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 101
Server version: 10.3.18-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye
Перепрописываем:

Код: Выделить всё

root@ACER:/var/www/html# cat /var/www/html/config.php 
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!

$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'forum';
$dbuser = 'olej';
$dbpasswd = 'zzzzzz';
$table_prefix = 'rlf1_';
$acm_type = 'file';
$load_extensions = '';

@define('PHPBB_INSTALLED', true);
@define('DEBUG', true);
@define('DEBUG_EXTRA', true);
?>

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 14 янв 2020, 22:55

Olej писал(а):
14 янв 2020, 22:54
Перепрописываем:
Рестартуем обра сервиса:

Код: Выделить всё

olej@ACER:~$ sudo systemctl restart mysql
[sudo] пароль для olej:

Код: Выделить всё

olej@ACER:~$ sudo systemctl restart apache2
На картинке всё видно: и что это 127.0.0.1 и то, что число сообщений и последний регистрант соответствуют форуму на 14.01 ... но число посетителей = 1 - потому что это я и есть, а форум локальный. :lol:
Вложения
loc2.png

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 27 янв 2020, 21:59

Olej писал(а):
14 янв 2020, 22:55
На картинке всё видно: и что это 127.0.0.1 и то, что число сообщений и последний регистрант соответствуют форуму на 14.01
Выше это были игрушки ... с локальной копией.
А сегодня, при подчистке БД боевого форума (), на сервере - убил много записай базы данных ... заметил когда чать уже была потеряна!
Такие ситуации стоят нервов :shock: :-(

Проверяю восстановление из бэкапов:

Код: Выделить всё

root@277938:~# systemctl stop apache2

Код: Выделить всё

root@277938:~# cat /var/www/linux-ru.ru/config.php 
<?php
...
$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'forum';
$dbuser = 'xxxxxxxx';
$dbpasswd = 'zzzzzzzz';
$table_prefix = 'rlf1_';
$acm_type = 'file';
$load_extensions = '';
...

Код: Выделить всё

root@277938:~# time mysql -u xxxxxxxx -p forum < backup-27.01.2020_01-35.sql
Enter password: zzzzzzzz

real	0m31,924s
user	0m0,561s
sys	0m0,229s

Код: Выделить всё

root@277938:~# systemctl start apache2

root@277938:~# systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-01-27 21:43:21 MSK; 8s ago
     Docs: https://httpd.apache.org/docs/2.4/
  Process: 9477 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 9481 (apache2)
    Tasks: 6 (limit: 544)
   Memory: 34.1M
   CGroup: /system.slice/apache2.service
           ├─9481 /usr/sbin/apache2 -k start
           ├─9482 /usr/sbin/apache2 -k start
           ├─9483 /usr/sbin/apache2 -k start
           ├─9484 /usr/sbin/apache2 -k start
           ├─9485 /usr/sbin/apache2 -k start
           └─9486 /usr/sbin/apache2 -k start

янв 27 21:43:21 277938.local systemd[1]: Starting The Apache HTTP Server...
янв 27 21:43:21 277938.local systemd[1]: Started The Apache HTTP Server.
Проехали... ;-)

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 27 янв 2020, 22:03

Olej писал(а):
27 янв 2020, 21:59
Проехали...
Всего сообщений: 17437 • Всего тем: 1746 • Всего пользователей: 526 • Новый пользователь: Aлekceй

Код: Выделить всё

olej@277938:~$ sudo mysql -u xxxxxxxx --password=zzzzzzzz
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 53207
Server version: 10.3.18-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> USE forum
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [forum]> SELECT COUNT(*) FROM rlf1_posts;
+----------+
| COUNT(*) |
+----------+
|    17439 |
+----------+
1 row in set (0.002 sec)

MariaDB [forum]> SELECT COUNT(*) FROM rlf1_users;
+----------+
| COUNT(*) |
+----------+
|      552 |
+----------+
1 row in set (0.001 sec)
Есть небольшие несоответствия (но они были и раньше!).
Накопившиеся за 11 лет форум.
Нужно будет на досуге полюбопытствовать...

Аватара пользователя
Olej
Писатель
Сообщения: 14104
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: восстановление из бэкапов

Непрочитанное сообщение Olej » 27 янв 2020, 22:56

Olej писал(а):
14 янв 2020, 22:37

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ sudo systemctl stop apache2
Вообще то, при восстановлении БД правильнее + проще не останавливать сервер Apache, а просто останавливать форум из админстраницы "Настройки конференции" => "Отключить конференцию:"
Конференция станет недоступной для пользователей, не являющихся администраторами или модераторами. Также вы можете ввести короткое сообщение (до 255 символов), которое будут видеть посетители.

Ответить

Вернуться в «Управление WEB ресурсами»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя