You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Configuration/Interfaces/Back-end-Database-and-Realtime-Connectivity/Managing-Realtime-Databases-with-Alembic.md
+22-16Lines changed: 22 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,20 +5,30 @@ title: Managing Realtime Databases with Alembic
5
5
Overview
6
6
========
7
7
8
-
Asterisk 12 now uses[Alembic](https://pypi.python.org/pypi/alembic) to help manage Asterisk Realtime Database schemas. This includes creation of SQL scripts for a variety of database vendors, but also much more. Alembic is a full database migration tool, with support for upgrading the schemas of existing databases, versioning of schemas, creation of new tables and databases, and a whole lot more. This page covers basic configuration of the Alembic configuration file for usage with Asterisk Realtime as well as basic usage of Alembic. While a full description of Alembic is beyond the scope of this page, the information on this page should help an Asterisk administrator create or upgrade an Asterisk installation.
8
+
Asterisk 12 now uses[Alembic](https://pypi.python.org/pypi/alembic) to help manage Asterisk Realtime Database schemas. This includes creation of SQL scripts for a variety of database vendors, but also much more. Alembic is a full database migration tool, with support for upgrading the schemas of existing databases, versioning of schemas, creation of new tables and databases, and a whole lot more. This page covers basic configuration of the Alembic configuration file for usage with Asterisk Realtime as well as basic usage of Alembic. While a full description of Alembic is beyond the scope of this page, the information on this page should help an Asterisk administrator create or upgrade an Asterisk installation.
9
9
10
10
Alembic makes upgrading less painfulAs Asterisk changes and new fields are made controllable via realtime, new Alembic change scripts are added so you will be able to simply run the Alembic upgrade command again in order to modify your database.
11
11
12
-
While Alembic helps with database migrations within a release series (e.g., Asterisk 13.x.x) it does not work very well when jumping to a different release series (e.g., jumping from Asterisk 13.x.x to Asterisk 15.x.x). Data loss is possible when jumping to a different release series. Before a new series (e.g., Asterisk 15.0.0) is initially released breaking changes can be introduced that can result in data loss.
12
+
While Alembic helps with database migrations within a release series (e.g., Asterisk 13.x.x) it does not work very well when jumping to a different release series (e.g., jumping from Asterisk 13.x.x to Asterisk 15.x.x).
13
13
14
-
Always exercise due diligence and backup your database before upgrading. Tables can be fixed easily. Repopulating the data if it's lost however isn't.
14
+
Data loss is possible when jumping to a different release series.
15
+
16
+
Before a new series (e.g., Asterisk 15.0.0) is initially released breaking changes can be introduced that can result in data loss.
17
+
18
+
Always exercise due diligence and backup your database before upgrading.
19
+
20
+
Tables can be fixed easily.
21
+
22
+
Repopulating the data if it's lost however isn't.
15
23
16
24
Please read the CHANGES file and the applicable UPGRADE files for important information about what changed between revisions.
17
25
18
26
Before you Begin
19
27
----------------
20
28
21
-
This tutorial assumes you already have some experience in setting up Realtime configuration with Asterisk for other modules. This page will not describe how to set up backend database connectors, and is written under the assumption that you will be using ODBC to connect to your database since the ODBC adaptor is capable of connecting to most commonly used database servers. For more information on configuring and setting up Asterisk Realtime, see Asterisk Realtime Database configuration.
29
+
This tutorial assumes you already have some experience in setting up Realtime configuration with Asterisk for other modules. This page will not describe how to set up backend database connectors, and is written under the assumption that you will be using ODBC to connect to your database since the ODBC adaptor is capable of connecting to most commonly used database servers. For more information on configuring and setting up Asterisk Realtime, see:
Alembic scripts were added to Asterisk in Asterisk 12, and will allow you to automatically populate your database with tables for most of the commonly used configuration options. The scripts are located in the[Asterisk contrib/ast-db-manage](http://svn.asterisk.org/svn/asterisk/trunk/contrib/ast-db-manage/)folder:
45
+
Alembic scripts were added to Asterisk in Asterisk 12, and will allow you to automatically populate your database with tables for most of the commonly used configuration options. The scripts are located in the[Asterisk contrib/ast-db-manage](http://svn.asterisk.org/svn/asterisk/trunk/contrib/ast-db-manage/)folder:
36
46
37
47
$ cd contrib/ast-db-manageFor the rest of this tutorial, we will assume that operations will be taken in the context of that directory.
38
48
39
49
Configuring Alembic
40
50
-------------------
41
51
42
-
Within this directory, you will find a configuration sample file, `config.ini.sample`, which will need to be edited to connect to your database of choice. Open this file in your text editor of choice and then save a copy of this sample file as `config.ini`- this will serve as the configuration file you actually use with Alembic.
52
+
Within this directory, you will find a configuration sample file, `config.ini.sample`, which will need to be edited to connect to your database of choice. Open this file in your text editor of choice and then save a copy of this sample file as `config.ini`- this will serve as the configuration file you actually use with Alembic.
43
53
44
-
There are two different parameters in`config.ini` that require review:`sqlalchemy.url` and`script_location`. The first specifies the database to upgrade; the second which upgrades to perform.
54
+
There are two different parameters in`config.ini` that require review:`sqlalchemy.url` and`script_location`. The first specifies the database to upgrade; the second which upgrades to perform.
45
55
46
-
1. Update`sqlalchemy.url` to the URL for your database. An example is shown below for a MySQL database:
56
+
1. Update`sqlalchemy.url` to the URL for your database. An example is shown below for a MySQL database:
47
57
48
-
sqlalchemy.url = mysql://root:password@localhost/asteriskThis would connect to a MySQL database as user`root` with password`password`. The database is`asterisk`, located on`localhost`. Different databases will require different URL schemas; however, they should in general follow the format outlined above. Alembic supports many different database technologies, including`oracle`,`postgresql`, and`mssql`.
58
+
sqlalchemy.url = mysql://root:password@localhost/asteriskThis would connect to a MySQL database as user`root` with password`password`. The database is`asterisk`, located on`localhost`. Different databases will require different URL schemas; however, they should in general follow the format outlined above. Alembic supports many different database technologies, including`oracle`,`postgresql`, and`mssql`.
49
59
50
-
For more information, see the Alembic documentation on SQLAlchemy URLs:<http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#database-urls>
51
-
2. Update`script_location` to the schema to update. Asterisk currently supports two sets of schemas:
60
+
For more information, see the Alembic documentation on SQLAlchemy URLs:<http://docs.sqlalchemy.org/en/rel_0_8/core/engines.html#database-urls>
61
+
2. Update`script_location` to the schema to update. Asterisk currently supports two sets of schemas:
52
62
1. `config` - the set of schemas for Asterisk Realtime databases
53
63
2. `voicemail` - the schema for ODBC VoiceMail
54
64
@@ -76,8 +86,4 @@ ImportError: No module named MySQLdb**Solution**: You probably need the Python i
76
86
77
87
For example, with Ubuntu, install the following package and then re-run your Alembic upgrade.
| AST\_CAUSE\_NORMAL\_CIRCUIT\_CONGESTION | 34. No circuit/channel available(Note that we've called this "Circuit/channel congestion" for a while which can cause confusion with code 42) | OR2\_CAUSE\_NETWORK\_CONGESTION || general-error |
35
-
| AST\_CAUSE\_NETWORK\_OUT\_OF\_ORDER | 38. Network out of order || 500 ||
| AST\_CAUSE\_NORMAL\_CIRCUIT\_CONGESTION | 34. No circuit/channel available(Note that we've called this "Circuit/channel congestion" for a while which can cause confusion with code 42) | OR2\_CAUSE\_NETWORK\_CONGESTION || general-error |
35
+
| AST\_CAUSE\_NETWORK\_OUT\_OF\_ORDER | 38. Network out of order || 500 ||
0 commit comments