Просмотров: 9171
Дата последнего изменения: 10.04.2024
Сложность урока:
4 уровень - сложно, требуется сосредоточиться, внимание деталям и точному следованию инструкции.
5
- Создайте пользователя и базу PostgreSQL
root@cp:/var/www/html# sudo -u postgres createuser bitrix
root@cp:/var/www/html# sudo -u postgres psql -c 'grant create on schema public to "bitrix"'
GRANT
root@cp:/var/www/html# sudo -u postgres createdb portaldb --owner bitrix --lc-ctype C.UTF-8 --template=template0
root@cp:/var/www/html# sudo -u postgres psql -d portaldb -c 'CREATE EXTENSION IF NOT EXISTS pgcrypto'
CREATE EXTENSION
root@cp:/var/www/html# sudo -u postgres psql -d portaldb -c 'ALTER USER "bitrix" WITH PASSWORD '\''passwd'\'''
ALTER ROLE
- Остановите cron и веб-сервер, чтобы избежать модификации данных во время переноса.
root@cp:/var/www/html# systemctl stop cron
root@cp:/var/www/html# systemctl stop apache2
root@cp:/var/www/html# systemctl stop php-fpm
root@cp:/var/www/html# systemctl stop nginx
- Сделайте дамп базы данных MySQL
root@cp:/var/www/html# mysqldump --opt --skip-extended-insert --hex-blob -u root portaldb > /tmp/mysql_dump.sql
- Сконвертируйте его в PostgreSQL
root@cp:/var/www/html# php -f bitrix/modules/perfmon/tools/mysql_to_pgsql.php -- --mysqldump=/tmp/mysql_dump.sql > /tmp/pgsql_dump.sql
- Убедитесь, что всё получилось
root@cp:/var/www/html# less /tmp/pgsql_dump.sql
- Добавьте дамп в PostgreSQL
root@cp:/var/www/html# sudo -u www-data psql -b -q --user bitrix -d portaldb -f /tmp/pgsql_dump.sql
- Добавьте дополнительные функции в PostgreSQL
root@cp:/var/www/html# grep -v 'ALTER TABLE b_group' bitrix/modules/main/install/pgsql/install_add.sql | sudo -u www-data psql -b -q --user bitrix -d portaldb
- Отредактируйте файл .settings.php
root@cp:/var/www/html# vi bitrix/.settings.php
'connections' =>
array (
'value' =>
array (
'default' =>
array (
'className' => '\\Bitrix\\Main\\DB\\PgsqlConnection',
'host' => 'localhost',
'database' => 'portaldb',
'login' => 'bitrix',
'password' => 'passwd',
'options' => 2,
'charset' => 'utf-8',
'include_after_connected' => '',
),
),
- Удалите модули без поддержки PostgreSQL
root@cp:/home/max/sites/php74cp1251.cp/html# for mysql in `ls bitrix/modules/*/install/mysql/install.sql bitrix/modules/*/install/db/mysql/install.sql`;
do
pgsql=`echo $mysql|sed 's#/mysql/#/pgsql/#'`;
test -e $pgsql || sudo -u postgres psql -d portaldb -a -c "delete from b_module where id='`echo $pgsql|cut -d '/' -f 3`'";
done
delete from b_module where id='abtest'
DELETE 0
delete from b_module where id='advertising'
DELETE 0
delete from b_module where id='b24connector'
DELETE 0
delete from b_module where id='biconnector'
DELETE 0
........
- Запустите сервисы
root@cp:/var/www/html# systemctl start cron
root@cp:/var/www/html# systemctl start apache2
root@cp:/var/www/html# systemctl start php-fpm
root@cp:/var/www/html# systemctl start nginx